Allow multiple route registration

Fixes #580. See #579, #581.

This ensures that routes can be registered correctly, and also adds tests to ensure they do.
We can go with it for now, but I'm not a huge fan of this pattern (ala `$force = false`).

An `unregister_route()` method is one alternative.