trans: new timeout transaction completion logic

Timeout logic used to be a bit awkward in elliptics - there was
a queue of transactions ordered by transaction number, i.e. the
first transaction created was the first one in the timeout queue,
which was checked by dedicated thread once per second.

Checker thread checked transactions one after another and if
its death time has passed the current time, transaction was removed
and killed in a few moments. But if transaction (ordered by its number,
not time to death) is not supposed to be timed out right now,
thread did not go past it to the next one, which might already timed out.
Multiple transaction started at the same time could look this way:
transaction 1, timeout 10 seconds
transaction 2, timeout 5 seconds

Transaction 2 will not be checked until transaction 1 is killed.

Now scheme is different - there is a timer tree indexed by
the time-to-timeout-death, checking thread's logic is the same.

Each server's reply changes time-to-death (wait timeout is being added
to the time reply has been received, that becomes a new
time-to-timeout-death). But this was true for previous logic too.
trans: ascending transaction number order instead of descending
v2.25.4.20
srw-test: moved thread-watchdog class outside timeout test function for older compilers happiness
utils: moved common functions to utils header
timer: added elapsed timer
utils: moved common functions to utils header
index_perf: added index performance tool
indexes: Handle failed parsed indexes metadata from msgpack

If msgpack parsing is failed during metadata extraction
metadata struct will be marked as not valid
and field "is_valid" will be false
Merge pull request #486 from IIoTeP9HuY/master

indexes: Handle failed parsed indexes metadata from msgpack
srw: use full namespace name for ioremap::elliptics::lexical_cast() function
config: removed comment about unused 'do-not-update-metadata' flag