Added route guarding to the router.

To use, add a guardRoute function to the router:

```javascript
router.guardRoute = function (routeInfo, params, instance) {
return true; //continues with navigation
return false; //cancels navigation
return '#/some/route'; //redirects
//you may also return a promise for any of the above
};
```