Resource matcher routing (rewrite)

Supersedes #72 

 - [x] Moving matching of associations (and generic hops in the URL) to a recursive matcher that assembles a `SubPathMatch` object
 - [x] Moving single types of match to own sub-path matchers
 - [ ] Consider using the "part" route for sub-paths
 - [x] Producing a `SubPathMatch` with all previous sub-path matches in it
 - [ ] Assembling of a full URL from a given `SubPathMatch`
 - [ ] Pluggable collection filtering logic (when reaching the path's end, if the leaf is a collection, it may be filtered based on custom rules)
 - [ ] Tests