Network updates:
Rename disconnect to sendDisconnect; set and enforce disconnect timeout (2 seconds).
Move peer deletion back to peerserver server and restore connection timeout logic (rather than waiting on remote to drop connection).
Update worst-peer removal to exclude peers which have been sent disconnect packet but still connected.
Refactor write() loop into single method w/independent lock for queue to allow for queue-pushes while buffers are written.
Update disconnect to immediately close socket and skip sending disconnect packet when appropriate.
lock free network read/write
self reference preventing dealloc while handler stack isn't calling doread/write
Merge branch 'up-develop' into upstream-dev; network changes

Conflicts:
	libethereum/PeerServer.cpp
	libethereum/PeerSession.cpp
	libethereum/PeerSession.h