Routing specs can set their own routes

(For example, to test Rails engines)

Prior to 2.12.1, routing specs could override the routeset by setting
the ivar `@routes`. However, after putting a delegation layer between us
and Rails, this no longer worked correctly. I do not think that setting
`@routes` was necessarily supposed to be a public interface, so I do not
think we have a duty to support it.

This pull request exposes a `routes` setter that can correctly override
the routeset, and adds it explicitly as a public interface.

I'm still mulling over the solution and the aesthetic of the setter, but
I figured I'd get something out there for feedback.

@myronmarston, @dchelimsky, what do you think?

Related: #668