The json serialization now only contains the length of each individual
blob child.
The go representation of this still uses offsets but the offsets are
for the end delimiter.
For "hi" "bye" we get
{"cb", [{"ref": "sha1-hi"}, 2, {"ref": "sha1-bye"}, 3]}
compoundBlob{[2, 5], [sha1-hi, ,sha1-bye]}
Keeping the length in the serialization leads to smaller serializations
Using the end offset leads to simpler binary search and allows us to
use the last entry as the length.
Issue #17
1) Clean up unit tests to check against serialization directly
instead of checking refs.
2) Switch argument order of Encode functions to be dst, src
3) Misc other stuff
VLLJEP is go! This first pass handles primitives, strings, refs, lists
and sets of encodeable things, maps of encodeable -> encodeable,
blobs, and compound-blobs. The difference between this and the
encoding stuff in types/ is that it doesn't recurse. The caller is
responsible for going down its value tree until it finds leaves,
encoding them, and then popping back up a level to replace those
values with Refs.
Towards issue #159
This is in preparation for renaming the 'Commit' abstraction to
DataStore. So we will essentially have a 'chunkstore' abstraction
and a 'datastore' abstraction.