Refactor addContact and splitBucket.

* Move splitBucket to OptimizedTreeRoutingTable; leave
  an abstract method behind.
* Replacement cache is now a list of OrderedDicts.
* The failedRPC attribute is no more.
* Follow python conventions.