Add internal 'replace' function.
Prevent route paths differing only in variable names.

For now path declarations like:

        get_ "/a/:a" f
        put_ "/a/:b" g

are illegal. The reason is that the current implementation sorts
and groups routes by path. The above declaration would yield two
different groups and at runtime the second would not be considered,
resulting in confusing 405 errors.