Refactor old page redirector into an extension

Would very much like to have this in 3.1, it's not an API break for anything I'm aware of.

Happy to add tests etc or change how it's done, this was just a first attempt at moving it out.

For reference, the use case for this is where you want to be able to put in your own redirect handler that will get called before finding the old pages. Currently, it's impossible. This will allow unloading the OldPageRedirector extension and loading yours in first.