[WIP] upgrade ModUrl usage for Route compatibility

This is still a WIP but posted now to encourage discussion.

This is one approach. The idea is to maintain BC by allowing ModUrl to continue to do what it did before but add another option to create a RouteUrl if a module supports it. Both types would be storable and allow a functional Url to be generated from the data.

/cc @Guite @drak @cmfcmf

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| Refs tickets  | #1945
| License       | MIT
| Doc PR        | -

TODO:
 - [ ] Modify Searchable to use UrlInterface instead of ModUrl
 - [ ] Modify Hooks to use UrlInterface instead of ModUrl
 - [ ] look for other applications of ModUrl in the core. replace as needed.
 - [ ] test/finalize
it does not. it is only partially implemented there. Should I move it to the child classes then? Should I also move all the implementing methods to the child classes even though there is duplication? or can they remain in the abstract?