Merge pull request #303 from pieterh/master

Fixed issue #351
Flush identity message for inproc transport

The scoket implementation for inproc transfer failed to flush
identity message. The result was that the identity message
was not delivered until after the user sent the first message.

The identity message was never delivered if the user
used the socket only to receive messages.
Merge pull request #304 from hurtonm/flush_identity_message_for_inproc_transport

Flush identity message for inproc transport
Fix identity exchange for inproc transport

The socket connecting using the inproc transport never
received the identity of the remote peer.
Merge pull request #305 from hurtonm/fix_identity_exchange_for_inproc_transport

Fix identity exchange for inproc transport
initial implementation of tuning TCP keep-alives for TCP socket
currently not fully cross-platform
work on linux
possibly work in *bsd
and could be enhanced to work on windows
more flexible keepalive options detection + awful options documentation
documentation trimmed down to be just placeholders for who knows english better than me
Merge pull request #306 from shripchenko/master

Implement ZMQ_TCP_KEEPALIVE* family of options to adjust TCP keepalives
ETIMEDOUT is a valid error code here. Fixes intermittent assertion failure on laggy networks
Merge pull request #307 from mkoppanen/master

Handle ETIMEDOUT
c++ style comments result in compile errors with non-c99 C compiler
Merge pull request #308 from jdc8/master

C++ style comments result in compile errors with non-c99 C compiler
Fix issue #335

The CreateEvent function requests EVENT_ALL_ACCESS access rights
when the event object already exists. This causes problems
when the event object is created from a service.
The solution is to call OpenEvent function when the CreateEvent
failed due to access control.
The proper solution would be to use CreateEventEx function, but
this one is not available on Windows XP.
Merge pull request #309 from hurtonm/fix_issue_335

Fix issue #335
Implement ZMQ_TCP_ACCEPT_FILTER setsockopt() for listening TCP sockets.

Assign arbitrary number of filters that will be applied for each new TCP transport
connection on a listening socket.
If no filters applied, then TCP transport allows connections from any ip.
If at least one filter is applied then new connection source ip should be matched.
To clear all filters call zmq_setsockopt(socket, ZMQ_TCP_ACCEPT_FILTER, NULL, 0).
Filter is a null-terminated string with ipv6 or ipv4 CIDR.

For example:
localhost
127.0.0.1
mail.ru/24
::1
::1/128
3ffe:1::
3ffe:1::/56

Returns -1 if the filter couldn't be assigned(format error or ipv6 filter with ZMQ_IPV4ONLY set)

P.S.
The only thing that worries me is that I had to re-enable 'default assign by reference constructor/operator'
for 'tcp_address_t' (and for my inherited class tcp_address_mask_t) to store it in std::vector in 'options_t'...
Merge pull request #311 from shripchenko/master

Implement ZMQ_TCP_ACCEPT_FILTER setsockopt() for listening TCP sockets. 
some spaces cleanups + delete unused anymore zmq::max_sockets + some minor code chages
Merge pull request #312 from shripchenko/master

some spaces cleanups + delete unused anymore zmq::max_sockets + some minor code chages
Make docs reflect socket mappings better