Make FakeRing use more real code

The existing FakeRing mock's implementation bit me on some pretty
subtle character encoding issue by-passing the hash_path code that is
normally part of get_part_nodes.  This change tries to exercise more
of the real ring code paths when it makes sense and provide a better
Fake for use in testing.

Change-Id: I87e10b78ed0963344988f73e946ecda7a96cc6a8
Merge "Make FakeRing use more real code" into feature/ec