state: print error if no state has been found for given ID, this allows to find out whether transaction was ever created for given group
Added quorum_lookup

quorum_lookup picks lookup_result_enties by following rules:
1. If there are quorum lookup_result_enties with the same
timestamp, they are the final result
2. Otherwise the final result is lookup_result_enties with
the greatest timestamp
route: let regular route table update also get route table from nodes explicitly added via dnet_add_state() and helpers

When user (client or server) adds new nodes via dnet_add_state()
and helper functions, we put those addresses into special array.

Periodic route request thread asks for route table random X groups
plus all this addresses.

It is needed to speed up large (severl thousands of nodes) cluster
convergence - usually in such big clusters 'remote' server config option
contains the same nodes for simplicity. Thus the same nodes will always
be the first who receive information about new nodes and thus the first
to update route table, which in turn will be requested by newly connected
clients/servers.
recv: do not dereference data stored in state, since to that moment it can be overwritten by the next command from the same client(socket). Use data stored in dnet_req_io, it can not be overwritten.
v2.25.6.3
reconnect: reconnect to addresses which were timed out during connection. Currently socket is marked 'timed out' when remote node is closed by DROP iptables rule for example.
v2.25.6.4
Added parallel_lookup

It lookups an information for the key in parallel in all groups
You should use it in case of you need lookup_result_entry from
more than one group
This method allows you to get lookup_result_entries almost
simultaneously from all replicas
In fact time of work almost equals to time of the slowest group
Opposite time of work of a series of lookups equals to amount
of time of work of each lookup
Fixed code style
Reimplemented prepare_latest, parallel_lookup and  quorum_lookup

Now all this lookups have common base
Added tests for parallel_lookup and quorum_lookup
weights: increase temporal selection-only (not state) weights (multiply by 10 on each step) until they sum up into large enough number for random selection

Small state weights will be summed into quite small value,
random generator will not be able to produce a value
with enough bits of entropy. In some cases @pos below
will always be zero ending up always selecting the first node.

This simple algorithm increases all weights until they sum up
to the large enough range.
v2.25.6.5
search: when search for the state for given ID only print error if there was not state found, if we found that given server's node has to handle this ID, do not print error.
node: throw client error even when dnet_add_state() returned 0 - this means we didn't connect to ANY remote node
v2.25.6.6
dnet_add_state: adding already added address is not an error
Recovery: wrapped os.rename by try/except for catching os.rename exception.
Python: added ability to use several remotes at elliptics.Node.add_remote
cache: Don't send 2 packets as lookup reply