Towards Anticipatory Mobile Computing: Challenges and Opportunities