Refactoring, doesn't pass tests
Add an n-ary tree type for handling the tree structure of directories.

There aren't any tests yet

Renamed:
Manifest ==> DirectoryEntry (could do with a better name)
ManifestEntry ==> FileEntry

Added:
Manifest
Add tests for the Tree type
Better Tree.__ne__ implementation
Replace stat_info tuple with StatInfo type.

Fix tests, all pre-existing tests now pass. Still needs a pass through for the
relevance of each test.
Remove NullFileEntry (unused), add more FileEntry tests
DirectoryEntry has list-like not map-like storage, iterate through it properly

Use assert_really_equal for tests
Add Manifest tests, fix Manifest where the tests show it to be broken
Add StatInfo bad input test
Fix typo
Add Manifest.from_cache tests and implement Manifest.from_cache

Re-order Manifest method definitions.

Add from_cache counterpart to DirectoryEntry.write_cache
Memory representation of a backup manifest is much closer to the CSV representation.

The tree structures are only used to build the manifest.

Backup and restore both work now.
Try using the cached data when building a manifest.

Add 'cache' command to create and cache manifest data without attempting a
backup.

Remove Manifest.from_cache as it's no longer necessary.

Pass a list of paths to Manifest.from_filesystem, allows creation of manifests
with more than one backup root.
Wrap the bucket up in a generator that closes and reestablishes the S3 connection periodically.

Last night's run ended up with the S3 connection being reset a short while in,
according to http://aws.amazon.com/articles/1904 the connection will be reset
after 100 requests.
This code will close and re-open the connection after the bucket object has
been requested 40 times.

This isn't pretty code, and it uglifies the functions in __init__.py quite a
bit. However, it lets me get my important data backed up. It needs a pass
through to refactor into something more pleasant.

https://github.com/gordonsyme/tardis/issues/1 tracks the fix.