Disallow inconsistent splat or ph names in tree

Routes of the form:
    /r/:id
    /r/:key/other

Should be written
    /r/:id
    /r/:id/other

Indeed the TRIE nodes for those params are shared between routes, which means
only one name can exist for an entire Router instance. The code now panics
on AddRoute().
Add early detection of duplicated param names

/r/:id/o/:id is invalid, rather than fail hard at request time, the router
now bails when the route is added.
Merge pull request #27 from yannk/master

Harden the router for edge cases: duplicated :id in the same route or across equivalent TRIE nodes