Refactor how registerable route classes are built

They are now OpenStructs.  Having these as structs was getting unwieldy
as the number of attributes was growing.

This also introduces some factories for these to simplifies some of the
test cases.
Only require title, rendering_app when not a redirect
Change how RegisterableRouteSets are constructed.

Move the knowledge of which fields need to be passed through into the
RegisterableRouteSet class. This makes for a cleaner implementation -
the number of fields that is being passed through is only growing as
support for redirects is being added.
Add support for redirects to RegisterableRouteSet
Construct redirect route set from content item.

Add support for constructing the corresponding route set for a redirect
format content item.
Set validation errors on the corresponding fields.

All route set validation errors were being set on the routes field on
ContentItem.  Now that there are 2 fields relating to these validations,
the errors need to be set on the appropriate one.
Remove rendering_app field from RegisterableRoute

It was not being used by anything.  The rendering_app is set on the
RegisterableRouteSet class as well, and that's the value that actually
gets used when registering routes.
Register redirect routes with router.