Update the CursorBase to include the new states for the cursor. 

Expand the CursorLifecycle to include cursor states and checking. 

Update OperatorExecutionBase to match CursorBase
Update ChainedCursor to have the complete state changes management from
CursorBase implemented. 

Review all the simple cursor uses and replace as possible to use the
ChainedCursor with the consistent state transitions and verifications.
LeafCursor update. Leaf cursors are (as the name implies) at the leaf of
the operator tree, hence getting their rows from something other than an
input operator cursor. This has some fallout effects on cursors
generated elsewhere.
Add MultiChainedCursor, for processing operators with two inputs and one
output.
RowCursorImpl - A lower level implementation of the RowCursor interface
to capture all of the CursorBase state change information for the
remaining uses of RowCursor. These are largely not Operator cursors but
are scattered throughout the system: Index and Group cursors for
scanning store data, Spatial cursors, FullText cursor, Sorter cursors.
QueryBindingCursor -> Interleaved work with the bindings cursor. 

Updated the OperatorITBase cursor state test to be accurate. 

All files compile, but no tests run.
Two fixed from test failures in the base tests. Base tests now all pass.
Clean up some of the missed RowCursor.destroy() uses by odd corners of
the code. 

Get the RestServiceITs to pass, as well as GroupLookup_DefaultIT, which
was the source of many problems. I anticipate the enhanced state
checking will keep me busy for a while. 

Correct the assumed cursor states in the
OperatorITBase#testCursorLifecycle().
Next round of fixes. Tweaking location of open/close in
AncestorLookup_Nested$readAncestorRow()

Add working jump() call to ChainedCursor to allow tests to work
correctly.

Remove a redundant method call from MergeJoinSorter$KeyFinalCursor
Manage RowOrientedCursorBase#jump(). In the new order of things, calling
jump can only occur when 1) the cursor is ACTIVE/IDLE, and 2) resets the
state back to ACTIVE, so next() returns a actual row. 

In IndexCursorUnidirectional, move the endKey setup from Initializer to
open(). This accounts for calling close()/open() to set up the endKey
properly, but not manging it when calling jump().
Several tweaks to calls for open/close and adding more checks for cursor
state. 

Make sure the several places that implement a real version of jump set
the cursor state back to ACTIVE to allow correct reading of next().

catch two cases of close() which should be setIdle(). 

Group Lookup Default is still in a debugging state, but has several
important fixes to be included.
Fix GroupLookupDefault use of it's input cursor to close/open it
correctly.

Still more asserts to check cursor lifecycle.
clean up a unused import.
Add two tests from other branch that failed while running with older
cursor management. Now passing.
Add test case from Sequel test showing assert failure.
Remove the assert from nextInputRow() as no longer valid. It is now OK
to read from the idle cursor because all the other operator correctly
handle that case.
Remove dead code and exired TODO comments. 

Add the loop failure query back into to YAML tests to validate this is
fixed.
Make sure all the cursor state checks in close() are wrapped in the
CURSOR_LIFECYCLE_ENABLED. The error here is if the cursor processing
throws an error (e.g. timeout), the chain of cursors is left in an
inconsistent state. All of the top level accesses use `try { execute() }
finally { cusror.closeTopLeve() }`. If the error occurs, the
inconsistent states make the closeTopLevel incorrectly fail.
Merge remote-tracking branch 'github/master' into cursor-processing-refresh
Fix setting the iidBound(IndexBound(Row())) with correct number of
values, even if they are ignored. This was causing the test to fail when
the logging was turned on because it was trying to print the binding row
and failing on the missing values.