Major refactoring + added documentation.

Extensive documentation in 'design by contract' style using custom doclets
in lib/AnnotationsDoclets.jar taken from the website of the book used in
the course on 'Object Oriented Programming' at the University of Leuven.

http://www.cs.kuleuven.be/books/OOPWithJava/Home.html