Revise CChan::JoinUser() & AttachUser()

The old AttachUser() that sent JOIN without topic or names replies
would leave clients in incomplete/broken state. JoinUser() was doing
two things; depending on passed arguments it was either joining user
on the channel on IRC, or attaching clients (properly). Now JoinUser()
joins the user on IRC, and AttachUser() attaches as expected from the
method names.
Update Csocket to b5185dc

> Fix IsConnected() to return false when Disconnected() gets called
Replace CIRCNetwork::FindClient() with FindClients()

FindClient() is not enough, because there are no restrictions to used
identifiers. They don't necessarily need to be unique, and the same
identified client might re-connect meanwhile a ghost connection is
still hanging there.
Merge pull request #752 from jpnurmi/findclients

Replace CIRCNetwork::FindClient() with FindClients()
Merge pull request #751 from jpnurmi/csocket

Update Csocket to b5185dc
Say hello to a channel filter module for identified clients

The channel filter module maintains client specific channel lists for
identified clients. A typical use case is to have a subset of channels
visible for a mobile client.

Managing identified clients:

    /msg *chanfilter addclient <identifier>
    /msg *chanfilter delclient <identifier>
    /msg *chanfilter listclients

When an identified client connects ZNC first time, all channels on that
network are joined. The list of channels is automatically updated when
the identified client joins and parts channels. Next time the identified
client connects, it joins the channels it had visible from the last
session.