Fixes for the Navigator (especially that of the hashbang variety)

@cjoudrey @jamesmacaulay @kristianpd 

## Fixes
- Numerous double dispatch bugs when using hashes
- Infinite loop when using hashes without `hashchange` support
- Unconstantize `HASH_PREFIX` so you can actually change it.
- Deprecate the pointless methods `navigator.push` and `navigator.replace` in favor of `navigator.redirect`
- Some general refactoring and cleanup.