Generalize backup types

* Adds "create" method which constructs certain complex objects
  from flags (done via a template to avoid having everything depend
  on Flags.h).
* Made a BackupManager base class which just has a run method. The idea
  is MySQL or Redis could use this to implement backups.
* Did something similar for restores.
Move backup stuff into correct namespace

Guest should only be for things needing to be used for RPC
messages.
Refactored RedisApp to update status appropriately

Added start of Redis backup classes.
Changed MySQL / Redis to share functionality

Moved the commands to start, stop, restart the datastores and
wait for their status to change into the DatastoreApp class.
Fixing small bug in prepare

Turns out we were calling stop Redis even if it wasn't running, which
meant my changes to throw exceptions if we couldn't stop caused
prepare to fail.
Config changes step 1
Fixed some Redis stuff

Added reset_configuration command.
Fixed issue in update-rc.d logic. Now we call it with default
first to set it up since the package isn't doing this for us.
Merge pull request #81 from TimSimpsonR/redis-backups

Preliminary work for Redis Backups. And other stuff.