Cursor processing refresh

This is the big Cursor state processing update. The new Cursor state diagram is in `CursorBase` as a comment. The big changes are 

* Remove destroyed as a possible state. 
* The basic state change management/checking is in `OperatorExecutionBase`, with three basic internals implementations: `LeafCursor`, `ChainedCursor`, and `MultiChainedCursor`. 

These changes allowed for refactoring most of the cursor state management from many places into many fewer places, and make it consistent. This has also fixed the outstanding cursor management bugs not fixed in the last release. There are a number of notes in the commit comments if you are interested in why changes were made.