Make get_all_server_info and get_scaling_group_servers use pure-http

The metrics.py code had to be updated to deal with this, and I refactored the effectiness a little bit into metrics.py, so that there's a new get_all_metrics_effects function extracted from get_all_metrics.

I've added unit tests for get_all_metrics_effects, and left the unit tests for get_all_metrics in place (and updated them to ensure that code is using pure-HTTP properly). The tests for that are pretty nasty, but hopefully they'll go away if more of metrics.py gets Effect-ified.


Is the `key` here even necessary? `items()` gets you an iterable of tuples; tuples compare matching elements. Therefore, I think it only matters if there are several elements with the same key but different values, in which case:

- This version would keep them in the order they happen to show up in because Python's sort is stable. That order is arbitrary, because it's a `dict`.
- Removing the key function would mean that pairs with matching keys would then sort on values.

It seems like the latter behavior would me more congruent with the cited reason on the comment.