Prerequisite changes in GUIDMixin and KBucket.

* Add and test hashing in GUIDMixin; a GUIDMixin can now be used
  as a key in a dictionary.
* Add and test iterator interface in KBucket.
* Add GUIDMixin support in keyInRange.
* Drop default value for market_id and relevant test.
* Test KBucket.addContact upgrades basestrings to GUIDMixins.
* Follow python naming conventions.
General maintainance.

* Update docstrings and function signatures.
* Follow python naming conventions as much as possible.
* Be consistent in the argument names.
* Require all methods to accept GUIDMixin as ID.
* Drop unused TimeoutError class.
* Purge exec flag from routingtable.py.
Setup initial testsuite; refactor abstract methods.

* Make abstract methods raise NotImplementedError; test most of them.
* Add initialization tests for abstract class.
* Follow python naming conventions.
Test and refactor initialization of RoutingTable implementations.

* Initialize superclasses properly.
* Use `super` instead of naming the superclass explicitly.
* Defer testing of other methods for now.
* Follow python naming conventions.
* Delegate logger instantiation to superclass.
Fix and abstract ID range. Test init attributes.

* Install an ad-hoc equality for KBuckets.
* Follow python naming convention.
Test and refactor kbucketIndex.

* Handle GUIDMixin transparently.
* Raise KeyError on key with bad range.
* Raise RuntimeError if kbucket invariant is violated.
* Include a hint for a possible optimization.
* Follow python naming conventions.
Test and refactor getContact.

* Handle GUIDMixin transparently.
* Ignore the docstring mentioning ValueError and
  test for a None value on unsuccessful lookup, as
  is the case throughout the code.
* Align signature with kbucket.GetContact and simplify code.
* Follow python naming convention.
Test and refactor removeContact(s).

* Make argument names consistent with rest of tested code.
* Leverage exceptions to simplify code structure.
* Add logging on exception.
* Follow python naming convention.
Test and refactor RoutingTable.distance.

* Raise ValueError if strings have unequal lengths.
* Handle guid.GUIDMixins transparently.
* Follow python naming conventions.
Test and refactor touchKBucket.

* Add ability to set timestamp manually.
* Test the abstract method, too.
Expand and test constant names.

* Purge exec flag from constants.py
* Define the maximum number of contacts per replacement cache.
* Define HEX_NODE_LEN_ID as the length of a node ID in hex.
Refactor node ID processing.

* Add and test numToId for easy conversions.
* Refactor _randomIDInBucketRange to use numToId.
* Refactor distance to use node ID length, and raise
  an exception when either of the keys is of improper
  length.
Test and refactor getRefreshList.

* Be deterministic; do not use randomized IDs.
* Drop _randomIDInBucketRange as it is no longer used.
* Use a list comprehension for simplicity.
* Avoid invoking time.time() many times. :P
* Optimization: do not enter loop if force flag is set.
* Drop unused import.
Drop addContact from TreeRoutingTable.

* Its proper implementation is contested.
* It references undefined names ("addErrback").
* The class itself is nowhere used in the code.
* It is very difficult to test, as it entails the network.
Merge pull request #730 from Renelvon/refactor_routingtable

Refactoring and unit testing of routingtable (part 1).
Stricten pylinting.

* Make pylint output color-coded to facilitate discerning errors
  from suppressed warnings.
* Warn on methods overriden by attributes (E0202).
* Warn if name is not in module (E0611).
* Warn if arguments differ in overriden method (W0221).
* Require __init__ in all classes (W0232).
* Disallow name shadowing (W0621). Redefining names from outer scopes hampers
  readability and may hide subtle errors, since python normally allows
  read-only access to global names.
* Require lazy logging (W1201). This should significantly lessen the string
  processing in nodes with quiet logging modes.
* Disallow long lines (C0301). Set the limit to 113 chars for now.
* Limit class ancestors to 7 (R0901); too much subclassing is bad design.
Suppress unreasonable pylint warnings.

* Suppress pylint error E0202 in BackupJSONEncoder. Usage is in agreement
  with the json package documentation.
* Suppress pylint error E0611 in behave and distutil imports. Usage is in
  agreement with the packages' documentation.
* Suppress pylint warning W0221 in node/ws.py. This is only a temporary hack
  and should be fixed in the future.
Cleanup DataStore class.

* Inherit from object and make it a new-style class.
* Drop unused DictDataStore and MongoDatastore.
* Insert a dummy DataStore.__init__ ; call it from subclass.
* Drop dead code from SqliteDataStore.
Fix shadowing of global names.

* Pack main inside a function so that its symbols don't pollute
  global namespace.
Remove pointless test files.