Refactor master -> slave pushing to its own class.

 o Moves half the master -> slave push logic to its own class
 o Background slave pusher now uses the Neo Scheduler for its threads
 o Fixes a bug where the previous implementation didn't take into account
   that the queue of pushes sometimes does not accept another item,
   leading to the committing thread waiting for a callback that never
   gets called.

 o Remaining: There are still two pools of threads used for the pushing,
              it should all be consolidated into one service.
 o Remaining: The current implementation still leaks threads in a long
              running cluster. It maps threads to slaves, but does not
              do any cleanup if a slave disconnects. It would probably
              be better to consolidate all pushing into a single background
              thread.
 o Remaining: The push protocol is still master-[notify]->slave-[pull]->master
              it should be master-[push]->slave
Merge pull request #1797 from jakewins/push-contention

Refactor master -> slave pushing to its own class.
Replace TypeSet with Type Specifications

These are capable of representing infinite sets of types,
provide better clarity and simplicity in the type checking,
and resolves a number of inconsistencies that could occur.
Add coercion of Cypher Types
Correct type checking of functions
Remove CTLong

CTInteger is used consistently internally
Use covariant/invariant/contravariant specifiers instead of TypeSpec operators
Merge pull request #1786 from cleishm/cypher-types

Corrections and improvements to Cypher type system
Fixed property loading tx state leakage

when loading properties from a node or relationship the transaction state
was considered. This is not allowed since the result of such loading goes
into the cache. Fixed by disregarding transaction state there.
Merge pull request #1833 from tinwelint/2.0-no-cache-prop-load-issue

Fixed property loading tx state leakage
Some initial porting from that old bloody branch