routelist: Send only addresses at route tables

We are able to gather ids by reverse lookup request to that node,
so we don't have to transfer all this ids every time.
elliptics: Added multi-backend support in rt

Reverse lookup & join send ids of all backends from the node, so
this change adds support for several Elliptics backends.

Changed structure of internal components, now there is one
dnet_net_state for each network connection, one dnet_idc for each node's
backend, so every dnet_net_state has list of dnet_idc instead of single
one. Each groups has list of dnet_idc instead of list of dnet_net_state,
as dnet_net_state may belong to several groups now.
Merge branch 'master' of github.com:reverbrain/elliptics into new-routes

Conflicts:
	library/dnet.c
	library/dnet_common.c
	library/server.c
client: Changed ger_routes signature

This method should return list of well-named structures instead of list
of anonymous tuples
elliptics: More steps to future 2.26 version

Update self only dnet_net_state by dnet_route_list object.
Connect to discovered nodes from thread who started route-list process.
For dnet_route_list commands use own mutex instead of node::state one.
server: Removed node::id

It's useless now due to multibackends architecture
elliptics: Fixed initialization of server nodes

Set server_prio and socket's control at socket's creation & join instead
of at idc's creation as currently server nodes may have no valid idc at
start.
route: Added support for DNET_CMD_UPDATE_IDS

It's special command for ids update like backend's start and stop
WIP: Added dnet_backend_io
client: Added node::from_raw API

This method creates C++ node from already existen C node
server: Separated backend to external structure

Finally added ability to create several backends per node
backends: Fixed init/cleanup, added remote init/cleanup

Added DNET_CMD_CONTROL_BACKEND command to enable and disable backends at
server node
Fixed initialization and cleanup of server node's backends
server: Drop connection to clients in case of err

If we failed to send route-list update to client we have to drop
connection with it as our states will be not equal
client: Fixed check of incoming route-list
backends: Store current backends' states

It's needed for monitoring, also it makes impossible to start the single
backend several times concurrently
route: Don't send ack for route-list request

The final packet is already sent by command processor
cache: Fixed initialization with zero-cache size
backends: Fixed compilation by legacy compilers

The don't know about std::atomic<enum>
Python: added support backend_id to route list.
Monitor: fixed initialization of backend_stat_provider.
Added new commands string presentations.