Add and test numToId for easy conversions.

* Refactor _randomIDInBucketRange to use numToId.
Refactor getRefreshList.

* Do not use randomized IDs.
* Use a list comprehension for simplicity.
* Avoid invoking time.time() many times. :P
Drop _randomIDInBucketRange as it is no longer used.

* Drop unused import.
Factor initialization of RT with 2 KBuckets.
Add and test hashing in GUIDMixin.

* Now a GUIDMixin can be used as a key in a dictionary.
Refactor addContact and splitBucket.

* Move splitBucket to OptimizedTreeRoutingTable; leave
  an abstract method behind.
* Refactor splitBucket to be as race-condition-y free
  as possible (without locks).
* Replacement cache is now a list of OrderedDicts.
* The failedRPC attribute is no more.
* Straighten and DRY addContact.
* Follow python naming conventions.