Initial commit of lvmsync.

The lvmsync tool will allow you to backup data to a remote logical volume store. It is smarter than a full copy, if the copy already exists remotely, this tool will compare blocks of the file and only copy up what has changed.
Created guest-lvm-backup.rkt.

This program is fully able to, shutdown a guest operating system, snapshot its lvm, backsup the lvm image to a remote server.

It is able to fully copy the backup if one does not exist, or if need be, differentially update based upon the latest existing backup on the server.
Adds code to determine the file size.
adds the watch and pipeline control structures and modifications that goes with them.

These structures were added, so that all program elements would be terminated if any error occur. This also ensures reporting of any exceptions on standard output if errors do indeed occur.
Adds progress reporting for entire basis upload.

Adds code to remove temporary basis file on complete upload failure.

Changes location of temporary basis file to be the location that backups are stored, instead of temporary directory.

Adds changes to allow ssh to use an identity file and a port argument.

Adds progress reporting when performing a full backup.

Adds copy-port-progress method which outputs progress to a designated port when copying ports.
fixes progress to no use ~r. There is a bug in ~r that causes it to crash with certain numbers.
Change noisey logging commands to debug instead of info.
Adds tee function to control.rkt.

Tee pump data from current-input-port back out to current-output-port and to the thread executing thunk. Data output by thunk will by default be directed to an output port that does nothing.
Adds comparison of sha1sums for snapshot file and new backup file after it is written.

The backup will abort if the sha1sums don't match.
Adds progress reporting for uploading backup.
Changes copy-port-progress to use read-bytes-avail! instead of read-bytes. This speeds it up about 20%. That is how copy-port is implemented in racket.
passing ssh -t was causing standard error from the remote process to be sent across standard-output. This was causing issues with piping.
Reorganized lvm-backup to be easier to read.

Broke the basis proc into 3 distinct steps.

Locate a basis file.
Perform full upload.
create signature.

This allowed a re-organization of the main guest-lvm-backup code to be more linear.
Changes copy-port-progress to now pass a boolean to the progress function with #t on the completed progess call.
Fixes bug in progress reporting, where the total bytes needing processed  was wrong.

Now uses volume-size and takes the size reading from the volume being backed up, not the snapshot.
Renames snapshot-size to volume-size to make things clearer.

Makes logging work better with a --log-level argument, that also gets passed to all remote workers as well.
Changes rdiff procs to use files for storing output from rdiff instead of memory.