recovery: added proper address abstraction.

This adds ability to use hostnames instead of IP addresses. As side
effect it adds IPv6 support and increases robustness of recovery range
computations.
This commit also fixes merge step of route table extraction.
recovery: prepare for merge split
recovery: split merge-specific parts to recovery_merge

This will allow easy integration of recovery_dc
recovery: improved IdRange class
recovery: remove duplicate keys on hash ring wraparound
Merge pull request #94 from SaveTheRbtz/master

Recovery IPv6 support and fixes.