Parallel uploads and downloads to/from Amazon; speed up SQLite; 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 SQLite.pm and SQLite2.pm: setting PRAGMA synchronous = OFF for
speed.
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.
Merge branch 'thinning' into development
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.