Test kbucketIndex.

* Ensure it can handle GUIDMixin as input.
Refactor kbucketIndex.

* Raises KeyError on key with bad range.
* Raises RuntimeError if kbucket invariant is violated.
* Handle GUIDMixin transparently.
Test getContact.

* Ignore the docstring mentioning ValueError and
  test for a None value on unsuccessful lookup, as
  is the case throughout the code.
Refactor getContact.

* Align signature with kbucket.GetContact and simplify code.