Add iterator interface to KBucket; minor refactor.

* Test iterator interface.
* Drop default value for market_id; drop relevant test.
* Follow naming conventions.
Docstring fixes.

* Move TimeoutError for readability.
Make abstract methods raise NotImplementedError.
Setup initial testsuite.

* Test TimeoutError.
* Partial tests for RoutingTable.
Test RoutingTable.distance.

* A ValueError should be raised on strings of unequal length.
Raise ValueError if strings have unequal lengths.
Initialization tests of RoutingTable implementations.

* Defer testing of other methods for now.
Initialize superclasses properly.

* Delegate initialization of inherited attributes to supeclass.
* Use `super` instead of naming the superclass explicitly.
Test that logger is installed.
Delegate logger instantiation to superclass.
Test init attributes.

* Install an ad-hoc equality for KBuckets.
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.
* Document GUIDMixin interface.
Test removeContact.
Refactor removeContact(s).

* Make argument names consistent with rest of tested code.
* Add logging on exception.
* Leverage exceptions to simplify code structure.