fab: do some work on a copy of the project to reduce downtime

NOTE: STILL NEEDS TESTING.  Committing now so I can untangle branches.
Also still need to handle a few edge cases - see TODO: comments in
fablib.

So the broad order used to be:

- do a little work, including making a copy for rollback inc. db dump
- take down the site
- do VCS update virtualenv, database migrations etc
- bring site back up

now it is

- make a copy of the site as "next"
- in next, do the VCS update and virtual env stuff
- take down the site
- move the current site to rollback and do database dump
- move next to replace the old current site
- do database migrations etc
- bring site back up

Which should mean a lot less site downtime when the virtualenv is being
updated.