Rename test suites to 'pure' and 'external'

* One suite is for fast, pure tests
* The other is for code directly interfacing with external
  dependencies that cannot be abstracted away easily
Dupes: Update Put op to also take in a bucket key

* Storing an entry requires both the path and its hash to
  use as bucket key when searching for duplicates
* make Mem store tests pass
Content Identifiers: Support for serialize nil id
Dupes: Get LevelDB store to naively store buckets