Added support for streaming messages.

asyncoro's "peer" method now has two additional arguments (with
defaults, so it is backward compatible). "tcp_port" option can
be used to specify the TCP port where remote node can be contacted.
With this, UDP is not needed to discover it, so if firewall settings
can't be changed for port forwarding, SSH's port forwarding can be
used for communication with asyncoro on remote networks.

"stream_send" option can be used to request that messages to peer
should be streamed. If stream_send is False (default), when sending
a message to peer, asyncoro opens a connection to peer, sends the
message and closes the connection (unless the next message queued
is for the same peer, in which case the same connection is used).
As creating sockets and opening connections can be expensive (in
both real time and CPU time), if it is expected that many messages
are sent to a peer, then stream_send can be set True for that peer.
Then asyncoro doesn't close connection after sending messages; the
same connection is used again and again until peer is terminated.
In some cases (e.g., client/server in tutorial where client uses
'rcoro.send' to queue messages to server), streaming can dramatically
improve performance (in the client/server example, it can be as much
as 40 to 50 percent).