Fix bug 931156: ensure breadcrumbs update during page move.

This does some significant refactoring, but not really changing, of
the page-moving code, breaking up the monolithic _move_tree() into
multiple shorter methods which each handle a smaller piece of the
puzzle (for easier debugging/editing).

The only genuine change is that Document.save() no longer attempts to
create redirects when a slug is edited; the redirect logic is now
called during page move, and the move() method, which existed only to
do that, is removed.