Obviously, the routes needs to be a tree.
Making the type system aware of parametric segments.

Since we now tread parametric segments differently in the maching
process, it makes sense to clarify this with types
Removing commented out code.
Handling a root route.
Handling root route in string convenience API.
Cleaning up, makes sense to instantiate the builder at the top since it is always used.