Allow passing in a BaseState class to the router

This is useful as it allows create convention based system where
you don't need to explicitly provide a state class for each
route - instead provide a base state which can automagically work out
what to do, e.g. load templates based on the state name and render it out
into outlets, etc.
Add a destroy method to router (mostly for tests)
Return the promise in startRouting
Started working on tests

I know, I know..