Got bencode to work in Py3K.

A round-trip thorugh the bencoding system as it now stands will
attempt to preserve string keys in dicts as strings, but all other
strings will emerge as bytestrings decoded from UTF8. Also, boolean
values will emerge as ints.

Otherwise this should work as a drop in replacement. As it encodes
to bytes, it may limit the changes needed in other portions of the
code (networking for example..
Ran 2to3 on all files in-place.
Many, many changes, but now working fairly well.

Aside from widespread syntax and paradigm changes to update to py3k,
and several additional logging notices for clarity of program-flow,
several more significant changes have been made:

1. A bug in the routing table meant that "buckets" that are now empty
   are still the *only* go-to for peers for matching prefixes, so that
   even a single peer being blacklisted could stall the router. To
   fix this, a filtering step was added to PrefixRoutingTable.get_close_nodes
   to ignore empty "buckets".
2. In case there are more than one alt-ips for router.bittorrent.org, all
   are queried and added to routing table during DHT.start.
3. While errors are insulated in the maintenance part of DHT._pump, during
   initialisation a single timeout could kill the DHT. So, similar insulation
   is now added to the start of _pump to make startup more reliable.
4. To test active, rather than passive, DHT behaviour nodeinfo.py now has
   code to find peers for a Debian torrent, although with a per-second
   polling habit it seems to get blacklisted quickly by peers..

Overall, this now seems to work OK in Python 3.3, which is a boon.

Directions from here:
1.  Make use of Py3.3's native "ipaddress" module for node IP info?
2.  Make use of own recursive bencoding module (benchmark)?
3.  Attach a local-facing JSONRPC server for modular usage? (one DHT, many apps)
4.  Add option to create DHT with custom Node ID (pubkey hash, for e.g.)
Added some specific files to gitignore.