Attempt #2: Support multiple Spine.Route instances

This is a 2nd attempt at #481.

Fixes/relates to #140, #159, #312, #373, #398, #479, and #511.

This allows multiple instances of `Spine.Route`, with each instance managing & matching it's own discrete routes. Whenever the user navigates, each router instance will try to find it's own match.

Also, every `Spine.Stack` instance now creates it's own router, meaning stacks can be nested without any routing conflicts.

Feedback welcome!