Fixed more extension bugs.

Hopefully they're the last ones. A new redistribution bug appeared, that's the next big bug.

D2TreeCore.java
* turned peers from an ArrayList<D2TreeCore> into a List<D2TreeCore> in order to use Collections.synchronizedList(List) during instantiation
* changed the names of all printMsg instances to printText and declared it as a class variable (now its scope is class-wide).
* Added EXTEND and CONTRACT keys.
* added a few diagnostic messages.
* now using hops to figure out the height of the tree during extension (routing tables of leaves are often incomplete, so the old way of computing the height did not give correct results).
* overhaul of print methods, now engineered to not congest the network with unnecessary messages (it's done with the traditional way, utilizing the -static-peers structure).
* removed printRT method.
* added a function (findRTInconsistencies) to locate network link discrepancies.
* added/removed/edited some comments, made a few formatting changes, minor miscellaneous fixes/improvements/changes.

D2TreeMessageT.java
* formatting changes
* removed message type PRINT_RT_MSG

D2Tree.java
* All code dealing with PRINT_RT_MSG has been subsequently commented out as a result of PRINT_RT_MSG having been removed.

PrintMessage.java
* formatting changes
* removed method boolean goesDown() (result of modification changes in D2TreeCore.java

RoutingTable.java
* Experimented with a new method to get inverse roles. Added boolean isInverse(Role) method and left it in comments.
* formatting changes
* changed iterator loops ( "Long node : leftRT" and "Long node : rightRT") to normal for loops to fix concurrency exceptions thrown by Iterator.

PrintRTMessage.java
* removed, no longer necessary