Cities and Complexity: Understanding Cities with Cellular Automata, Agent-Based Models, and Fractals