Added Finger Table Routing

* Peers maintain a finger table to shorten routing paths
* Table is periodically updated
Increased FingerTable size; Corrected range
Fixed Chord finger table building; added tests

* the finger table is now index beginning at 1 until 160 (like in the paper)
* added tests for correct finger table building (esp. at edge cases)
Fixed subscription listing
Improved routing logic
Longer default timeout for Peers

* Longer timeout for peer heartbeat
* Stabilizes the DHT, price paid is slower recovery
* Hook up the ChordNode timer to the Peer's timer as they are
essentially the same thing
Fixed Chord#fix_fingers()

fix_fingers() now only fixes fingers for already existing finger table entries.
Fixed off-by-one in Chord.Helper#randomFingerTableIndex
Fixed bug in Chord#closest_preceding_finger()

Finger table is sparsely filled, so check for existance of value
ConnectionManager#bootstrap() must not be called twice

* Removed accompanying test
* Added test that checks whether the error callback of bootstrap() is called
  correctly.
Added global config object

* Set peer default timeout to 10ms in tests for faster tests
Fixed variable names
Fixed variable names
Fixed ConnectionManager#join() tests

* Added test to check if join fails
* Fixed double join test
Added parameters to global config object

* All default parameters can be overwritten using the config.js file
Allow setting config from outside
Fix corner case in Chord routing

* We cannot route the message if our successor is unknown (due to
failure, incomplete join etc.)
* In that case, drop it and error out
Testing variable size finger table
Testing Chord m=16
Added chord `m`-parameter to config