! routing: evaluate all branches of a route structure lazily, deprecate ...

...`dynamic` directives, closes #780

This introduces two changes to the evaluation model of a route structure expression:
1. Directive0 instance now evaluate their subroutes lazily rather than eagerly
2. The `~` evaluates its argument lazily.

This unifies the evaluation model of a route structure to full laziness, which should be much easier to understand and reason about than the previous half-eager/half-lazy logic.