Tweak $location decorator and visit(); all tests pass.

- Guard against infinite $location.path loop as explained in comment
- Give visit() one more tick before it invokes the callback; determined empirically that this is necessary on occasion else the viewElement() may return empty object