Pass `Descent` into `Cursor`.

Take a step toward the structured hand-off of the `Locker` by passing
the `Descent` into the `Cursor` and having the cursor zero out an array
that contains the `Descent`. We'll use this as a reference to determine
if the `Cursor` owns the `Descent` or if the `Descent` is still owned by
the `Strata` object.

See #273.
Create cursor `Descent` reference array.

Pass around the `Descent` used to create a cursor using an array with
the `Descent` as a single element. This acts as a reference. When the
`Cursor` takes ownership of the `Descent` and it's `Locker`, it sets
array length to zero. If there is an error during the descent and
creation of the cursor, and the array length is zero, then the `Cursor`
has made it to user land and the user must release the locks via the
`Cursor`. If the array length is non-zero then the `Cursor` has not been
created and we never made it to user land, so the `Strata` object should
release the locks.

See #273.