Basic support for multicast node announces.

This is the 'client' part of the IPVS gateway service, which is being
developed in the corresponding branch of the cocaine-plugins repository.
Locator node announcing and directory flattening.

Locator service can optionally announce the node via multicast. Also,
flatten the directory structure a bit, got rid of one nesting level.
Dump announce information to the log.

When node announces are configured, dump the announce group information
to the log for additional verbosity. Print the service count before the
locator service initialization so that the bootstrap message will be the
first one in the log.
Merge node announcement sink with emitter.

Locator is now responsible for both emitting and receiving node
announcement messages. This information will be forwarded to some
underlying system for IPVS configuration.
Support for locator full dump method.

New locator method to obtain a full dump of service tables from the
locator. Will be used by the metalocators to aggregate the cluster
information.
Automatically figure out event result types.

To make things easier, event_traits<Event> will now automatically figure
out the event result type, be it a single type or a type sequence, in
which case it will be converted to a corresponding tuple type.
Implemented remote locator querying.

Aggregating locator now queries for service tables from the discovered
remote nodes (and throws it away immediately).
Handle weird remote nodes gracefully.

Do not crash if a new remote node announces itself, but it's locator is
not listening on an external interface.
Resolve remote node hostnames.

As remote nodes are sending their hostnames in the announces, they need
to be resolved to be able to interconnect. Also handle socket errors
gracefully.
Properly detect restarted remotes.

Each node now has an unique identifier which is regenerated on start.
This identifier is announced along with node's hostname, so that the
upstream locator can detect when the node has been restarted.
Use the right socket to receive announces.

After socket separation, a wrong socket was used to receive node
announces, which led to segmentation faults.
Separate announce sockets.

I didn't manage to make both receiving and sending work on a single
multicast socket, hence the separation.
Merge branch 'master' into ipvs.

Pull in 0.10.3 release stuff into the active development.
Proper log message wording for locator.

Some more verbosity for the locator log messages never hurts.
Merge branch 'master' into ipvs
Move optional traits to the cocaine::io namespace.

Type traits belong to the cocaine::io namespace, so move them there.
This resolves failing build due to 'detail' namespace conflicts.
Allow multiple listen endpoints for one actor.

Now actors can listen on multiple endpoints, for example, IPv4 and IPv6
addresses or IP and Unix sockets at the same time.
Fix the includes for actor.

Fix half-assed Boost container_fwd.hpp bug by explicitly requiring the
<list> header for the actor_t.
Merge branch 'master' into ipvs
Hide slave implementation details.

Standard output pipe implementation is moved into the detail namespace
so that it would never clash with some other pipe_t class, probably of
cocaine::io origin.