Initial work on fleshing out the structure of a RoutingTable has begun.  It has an ID space and the notion of a list of buckets defined.  Verification tests are as always accompanying.
Added buckets which can split into two new buckets with the appropriate id spaces
Modified the definition of a node to no longer include a routing_table as that doesn't make sense.  It now encapsulates the required information for a node.
Added node bencoding.
Added the ability to add a Node to a Bucket
Created Id generating module which can generate Ids in the standard bittorrent range or in a custom defined range.  Appropriate tests are included.
Made the default ID space for the RoutingTable a class variable and updated the tests accordingly.
A RoutingTable can now have a Node added to it.  There was also an error with the RoutingTable's Default_Id_Space which has been fixed.
Added some type validation to RoutingTable methods.  RoutingTables are now required to be initialized with the local node, for the future bucket splitting work.
Added a k_factor / limit on the number of nodes per bucket.  Added some type checking on bucket initializiation.
Buckets can now report whether their ID range includes the local node
Buckets cannot add duplicate nodes now, when they are references to exactly the same object.  A following checkin will update this to disallow adding different Node objects which have identical contents to the smae bucket.
Nodes are now compared with the == operator in a deep way if object_id doesn't match.
Many bug fixes around bucket splitting and node adding in the routing_table.  The main problem was that bucket splitting was being computed incorrectly.  A test needs to be written to verify that bucket splitting is always working correctly.
Added another assert to the bucket split test