removed non-paired instructions
GlobalLock fix: GL wasn't waiting for other queues to finish because we were
incorrectly interpreting async.queue.length(). Instead of using queue drains
we now keep a manual count of the number of queue items, and wait for these
reach 0. This is used for GL and for exports.stop.
Design change: previously we wrote transactions to their collection eagerly,
now we will only write immediately before processing. This means we can push
into async.queue quickly. This removes the need for a user to use timeouts
when enqueueing interleaved transactions to ordinary/globallock queues.
However, enqueuing a transaction no longer guarantees eventual execution. On
restart only transactions whose execution began before the crash will be
resumed. This still ensures consistency. It may also be a more sensible
behaviour.
1) Fixed: committed.immediately transactions were not completed properly before
GlobalLock transactions, or before a committed.stop

2) committed.transaction constructor fn now takes an array of instructions
and optionally rollbacks. This makes it neater to declare transactions
Feature: Chained Transactions. Several changes resulting from this:

1) transactions and immediates are kept in a pending list while globallock is
enforce, then requeued after, rather than failed outright

2) internal _enqueue _immediate and _withGlobalLock created which skip the stopped check, so
chains can complete depsite a call to exports.stop()

3) instruction execution results are now saved in
transaction.execution.results, this makes rollbacks on startup more accurate,
and audits more thorough.

4) exports.start changed to work properly _inSeries, and cope with stalled
chains where the lead transaction is Committed yet there remain Queued
transactions in transaction.after. Avoiding this would result in more db
writes, a postfix is hence preferable.
restart tests: tick
config slightly nicer