Reviewer AJH: Add backup scripts

Hi Alex,

Please can you review my work for memento backup/restore scripts? Please note that these scripts are  based heavily on the existing scripts in crest (which I've removed from crest in a different pull request). The list_backups and restore_backup scripts are virtually identical. The do_backup script has been reworked and enhanced a fair bit.

I've tested the scripts in the following manner:

1. Spin up a clearwater deployment with memento and using the new clearwater-cassandra package. Check scripts are on the memento node in /usr/share/clearwater/bin.
2. Run list_backups. Check there are no backups.
3. Make a call. Check call appears in database. Run do_backups to create a backup. Run list_backups to check the backup exists.
4. Truncate the call_lists table and run restore_backup to restore the backup we've just taken. Check the table is restored.
5. Make 4 more calls, taking backups after each one. Check that at the end only the 4 most recent backups remain, and that /var/lib/cassandra/data/memento/call_lists doesn't contain any snapshots.
6. Truncate the table and restore one of the first available backups. Check it gets restored correctly.
7. Fill up the disk space with block files so that there is not enough room to move a new backup over to the backups directory. Check that the script exits with an appropriate error message and no new backup is created in the backups directory. [I haven't actually quite managed to test this yes, will do first thing tomorrow. And I've tested something very similar so I'm almost certain it works]

I also initially did some light testing with homestead. There is no reason homestead/homer should be different from memento so I felt this was sufficient.

Let me know if you think there is any more testing I need to do. I've still got my deployment running so it should be very easy.

Thanks,
Graeme
My thoughts on error codes were

0 - success (not really an error)
1 - user input error (so no keyspace supplied, invalid keyspace supplied etc)
2 - some sort of system problem (like not enough disk space)

I'm happy to just define a different error code for each error and use them if you'd prefer