1) Added documentation

2) Refactor: Now all the classes that have logger are extending the
Loggable abstract class (the subclasses no longer keep a Log member
object)