AddStreams correct when invoked multiple times

Before, if address was "0" and AddStreams is invoked
the second time, it would modify ```isclient[i]```
instead of ```isclient[stream[i]]```, for i = 0..num_streams.
Merge branch 'master' into disablebind
Socket now properly handles copies

This is needed since the vector datastructure
will sometimes copy objects.

Alternatively, vector<Socket> client could be defined as
vector<Socket*> and the Socket::Socket(const Socket& sock)
could be made private, thereby disabling it. If it is
not defined, C++ automatically generates it.
Use the 'stream' variable instead of 'i'

In a few places (notably InitStreams), there were bugs confusing
'i' as the stream number with 'i' as the iteration number. This
is unambiguized by using 'stream' if the stream number is meant
and 'i' if the iteration variable is meant.
Listen and accept more explicit failure messsage