NetworkStream: simplify, add Logger, getRemoteAddress(), better cleanup and closing, javadocs
* simplify object deserialization
* support using application's Logger instance
* introduce getRemoteAddress()
* introduce close() and move close streams to done()
* fill out javadocs
Simplify object deserialization. Remove the now unused object length
functionality that was originally prefixed to the object in the serialized stream.
This allows the dropping of the indirect streams used to measure the
size of an object.
Logger. Pass in the application Logger instance to the constructor, add
the project-standardised simple logp() method and use it in place of
console error messages.
Introduce getRemoteAddress(). Provide public access to the stream's
remote host address so that NetworkMessage can be tagged with the
sender's address for easy ServiceAddressMap support.
Introduce close(). Provide public access to tell the stream to close
cleanly. Used by the NetworkStreamManager to close all streams cleanly
at shutdown.
Move the stream closing code into done().