Massive refactoring

OK this is basically a rewrite.

- URL schema
- URLs now treated as entire URLs, not they're component parts
- Droped per token/provider exists/not_exists in favor of conflict resolution on the URL entire.
- Abstracted all database logic to driver
- Support for handling old routes

````
FQN\Document\Foobar:
    url_schema: /articles/%article_title%
    conflict_resolver: [ auto-increment ]
    token_providers:
        article_tilte: [ method, { name: getTitle } ]
````

Note I deleted all the providers just to be Zen - but I will probably pull them back in later.

Now my head really hurts .. but the good news is that the code is much easier to follow.