Urban Computing for Sustainable Smart Cities: Recent Advances, Taxonomy, and Open Research Challenges