timing-based affinity sorting for primary replicas

This changes the way primary replicas are sorted on GET requests.
Previously, replicas were shuffled. Now the replicas are sorted
based on the most recent connection time data to that node.

get_more_nodes() (ie handoffs) is unaffected by this patch because
sorting by affinity would break the durability provided by the current
as-unique-as-possible handoff selection.

Timing data is collected for each node each time the proxy makes a
connection to that node. If timing data for a node doesn't exist, then
it is assumed at 0 (ie will sort earlier) so that timing data can be
collected for that node.

Change-Id: I837fa21c3a566b10cce33eb75788665e1d01cd8a