Settings issue and 404 route

1) Fixed an issue with settings module returning a function rather than a hash, causing the rest of the router to never detect that pushState is available.

2) Added a fallback mechanism: register a '/404' route and it will be called when no matching route is found.