State, Location, and Layout management for AngularJS