Minor refactoring & fixes

- Fixing a regression in `data.sync()` caused by call stack optimization where HTTP headers were being passed as the request body
- Added `route.current`
- Limiting `beforeHash`, `hash` & `afterHash` events to fire only when the new hash doesn't match `abaaso.route.current`