Introduce #expand() in the Kernel API

Add a first primitive to the kernel api that uses the
cursor/register spec to define its signature. This first primitive is capable
of expanding a single hop from one source node, and filters by reltype and
direction.

This commit contains:

- A revised Cursor, no longer inheriting from IOCursor as the two perform
  different jobs.
- Register implementations needed for this first primitive.
- A complete "augment" cursor that can overlay local tx state on top of another
  traverse cursor.
- A temporary implementation of a store expand cursor which simply piggybacks
  on existing listRels and visitRel mechanisms in the cache layer.

Next steps:

- Refactor the store format into stand-alone classes, separate from the stores
- Implement a store expand cursor that uses those format classes directly,
  bypassing the cache.
Merge pull request #2800 from jakewins/2.2-cursors

Introduce #expand() in the Kernel API