Initial commit of the original Brackup code.

Includes SVN metafiles so that the code could be updated
from http://brackup.googlecode.com/svn/trunk/
Added licence information
Speed up SQLite

Patch to SQLite.pm and SQLite2.pm: setting PRAGMA synchronous = OFF for
speed.
Parallel uploads and downloads to/from Amazon; path prefixes

Implemented multi-process upload; fixed add_key call which used deprecated
Net::Amazon::S3 API; and standardisation of usage of 'chunkpath' and new
'backuppath' methods to derive S3 paths for chunks and backup files.  This
allows the contents of each bucket to be put inside a path (or indeed
translated into any desired string form).  A path is important for use of
the buckets with third party tools: AWS console doesn't let you delete
everything in a bucket, but it does let you delete everything inside a path.

Implemented multi-process download (includes catching and aggregation of
errors, so error-reporting functionality should be unchanged).
Patch to connect to Amazon S3 using https.
Assert that calculating digests precede reading content

A patch that asserts that the raw digest is calculated before the stored
(backup) digest, and that the stored digest is calculated before reading the
chunk contents.  This should ensure that any corruption to the backup due to
changing file contents would be limited to the current backup and fixed in
subsequent ones.  http://code.google.com/p/brackup/issues/detail?id=7
mentions that digests are checked on restore, so Brackup should warn if a
restored file is in an inconsistent state.  Not all asserts are added in the
case of composite chunks yet.
Added a new patch so that Brackup would understand 'gb' as a size.
Removed hard-coded patterns to ignore

See http://code.google.com/p/brackup/issues/detail?id=4
Whitespace changes to tidy the code.
Retry uploading to Amazon more times

A patch so that Brackup would retry the upload 12 times instead of 5, and
waiting 5 (x5) / 30 (x5) / 300 (x2) seconds instead of 5.
Implemented a patch that makes Brackup able to thin out earlier backups.

Introduced a new config key to store the rules for the thinning.  Added POD
documentation.
Whitespace changes to tidy the code.
Specify number of threads used to restore files on command line

Patched backup-restore and Restore.pm so that the number of processes used
to restore files in parallel could be specified on the command line.
(Perhaps this should be different from the number of daemons specified for
the target as there, uploading chunks happens in parallel.) Now the code
avoids forking if the number of threads is 0 to restore the caching logic.
Moved forking/waiting logic from Amazon.pm to Target.pm
Bugfix to make sure the appropriate logic is called to store chunks in the inventory
Renamed wait method to wait_for_kids for consistency
Identify child processes with $schunk->digest
Only call wait_for_kids if daemons count is positive
Delete chunks from the target first during gc

Delete orphaned chunks in the inventory from the inventory first, and then
the target in a single loop.  If the process ends prematurely then the local
inventory may indicate chunks already exist on the target when in fact they
do not.
Save chunk path prefix in meta file