Introducing LenientObjectInputStream and LenientObjectOutputStream

* these two classes are used to ensure that 1.9.3 ignores the serial
version UUID on incoming messages and uses the serial version UUID of
the previous neo4j version when in a mixed cluster as part of a rolling upgrade.
* the second part works by capturing the serial version UUID of messages from 
the previous from the snapshot message which is sent to an instance when it
first joins a cluster.