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.