Merge master and formatting for Command.Dupes.Ls
Cleanup cabal file

* Formatting
* Remove unused dependencies and options
Represent Dupes.PathKey directly as a ByteString

* Encoding PathKey was needlessly a multi-step process. Using ByteString
  directly matches DB interface and is much more efficient
* Something like 10x performance improvement, did not benchmark explicitly
Dupes: GetOp should return a BucketKey

* Get retrieves an entry by path, the result should be a Maybe BucketKey,
  not just the same path again.
* Formatting
Re-write ContentIdentifier

* Simpler, more efficient data types
* Output to standard urn:<hash>:<digest> format
* More efficient serialization through builders and enum
groupBy implementation for Data.Machine
Move app dir logic from Main to Settings
Renaming and type declaration in Dupes commands
Introduce required lower bound on bytestring dependency
Fix build to work with QuickCheck >= 2.7
Slightly better type annotations and naming in Tests.Machine
Fix last commit which broke Tests.Machine