rename :format-fn in masai-layer to :node-format-fn
This example is rubbish, and old.
0.8.3
add custom key codecs to masai_layer

Still need to add them to masai_sorted_layer, which is the hard part.
initial work on adding custom key codecs to masai_sorted_layer

The basic strategy is to fetch the entire relevant range from the
database and they for each chunk, lookup the appropriate codec and
decode it.

Still need to implement the top-level node-subseq methods.
Handle a nil `end` coming from bounds
Fix reader in default key codec
Fix some bugs
rework how custom key codecs are handled for sorted layers

We cannot fetch everything using ranges, because this means we read
unnecessary data in some cases. For example, if we want to read
["person-1" :age] using the default layout, we end up reading everything
under [:edges :*] even though we don't need it. So now, we group the
subnode-layout by prefix and fetch each group using either a range or a
direct lookup, depending on what is more efficient.
Update code for new layout structure
Update tests to new layout structure
Don't create key-conflict in set literals
Add basic tests for path-match
Fix arg order to path-match
Keywordize any top-level key.

There are tests that try to store :name as a special thing, so we
may as well have a default key-codec that works for that.
Fetch needs the layer
Some fixes.

- Make sure never to write with the read codec.
- Don't append codec-reset twice in a row.
- Don't include empty/nil values in fetch-range.
- Get levels of nesting right in node-chunks.
update dissoc at top level to work with append only
make rev test helper a memoized fn instead of a vector
return nil if the top-level node is empty in masai-layer.

this is more in line with how masai-sorted-layer works and it let's us
dissoc on append-only layers.