Better Abstractions in lib functions.

 - Moved BucketCommunicator to its own file
 - Abstracted ContentHasher out of ManifestBuilder
 - Cleaned up Uploadable Model to be less async