Extension:MirrorTools/Move and mirrormove

Pseudocode

 * If we're moving revisions away from the source (i.e. move from) page, then:
 * If there are any revisions there that have a rev_mt_former_page that's not the same as the rev_page they're at, then move them to that rev_mt_former_page.
 * Also recreate the page entry if necessary.


 * If a page already exists at the target namespace and title:
 * TODO: If it's only a redirect back to the source page, then eradicate it without a trace, regardless of whether it exists locally or remotely.
 * Otherwise: that must mean a local page exists at the target page title and namespace. So:
 * Change the rev_page of the revisions at that local page to the page ID of the mirrored source page.
 * Also set the rev_mt_former_page of those revisions to the current page ID of those revisions.


 * Change the page namespace and title of the mirrored source (move from) page
 * Create a redirect, if applicable
 * Null revision
 * Log the move
 * Add the move to recentchanges
 * Add the tags
 * Return the timestamp, etc.