This change alllows Ndb::startTransaction() to run as a sync call in the
main JS thread if we suspect that it will not block.  As a proof of 
concept, this allows you to measure the performance with this change;
but it should not be used as-is, because the guess could be wrong,
which would cause the main thread to block waiting for network I/O.
Refactor Operation and DBScanHelper into two classes called
KeyOperation and ScanOperation.
Bug fix where the do_close flag must be associated with the 
transaction rather than its parent Ndb object.
Adapt DBOperationHelper to the KeyOperation / ScanOperation change.
Add two new classes, DBTransactionContext and DBSessionImpl.
These will free the JavaScript code from the start/prepare/execute 
cycle of Ndb and NdbTransaction, eventually allowing operations
to be performed with fewer scheduled async calls and therefore
less overhead.
Rename addOperation() to getNextOperation()
Refactor DBOperationHelper: 
 it now takes a DBTransactionContext rather than an NdbTransaction.
 it now defines operations, but does not prepare them.
executeAsync() on AsyncNdbContext is no longer wrapped for JavaScript;
use executeAsync() on DBTransactionContext instead.
Adapt AsyncNdbContext to be aware of DBTransactionContext
DBSessionImpl
Template class NativeCFunctionCall_4_
NdbTransaction is no longer wrapped for JavaScript
Revise protocol for registering a transaction open / closed.
Use only two calls, registerIntentToOpen() and registerTxClosed().
Always make these calls from JavaScript main thread.
Adapt DBDictionaryImpl to use DBSessionImpl rather than Ndb.
Add new connection property ndb_sesion_concurrency
Refactor initialization of NdbSession and connecting of the  
new NdbSession to its impl.
This commit includes various small C++ fixes.
The next commit includes major JavaScript logic changes.
With these together, spi tests pass.
Major JavaScript logic changes in NDB adapter.
NdbTransactionContext, NdbSession, NdbOperation, and NdbConnectionPool
are adapted to use the call flow of DBSessionImpl and 
DBTransactionContext rather than the native call flow of the NDB API.
Minor bug fixes for passing SPI tests
New SPI test
  begin transaction; delete (execute NoCommit) ; read deleted row ; commit.
Refactor NDB execute.
This patch renames PendingOperationSet to DBOperationSet, and makes
DBOperationSet the "point of contact" for JavaScript calls to begin and
execute transactions.
All t_basic tests now pass.