Overhaul of extend and transfer of nodes during redistribution with various bugfixes.

D2TreeCore.java
* Made joins more robust. When a bucket is busy, join requests are forwarded to a random bucket.
This turned out to eliminate the problem of network nodes not being able to serve new nodes.
* TransferRequests now deal directly with bucket nodes from the beginning. This eliminates the need for a second pass.
* Reorganized TransferRequest handlers in order to fit in one pass.
During each transfer an originNode and a destinationNode are specified and then destNode and pivotNode are moved/reconnected accordingly.
* (ExtendRequest) Information about currentHeight is now controlled by ExtendRequest data packets instead of depending on message hops due to reliability issues.

RoutingTable.java
* Overhaul of the algorithm that checks for inconsistencies/discrepancies in the routing table (diagnostic).
* Code formatting changes/improvements.

RedistributionResponse.java
* Added dest node as a parameter of the message.

PrintMessage.java
* Added static print methods to make debugging easier.

ExtendRequest.java
* Added current height as a parameter of the message.

D2Tree.java
* Replaced postActionCheck with consistency checks in more vital spots (right after each modification).