Restructing the layout of classes

Instead of mixing in modules to Maybe and Either classes, the
functionality has been moved to the specific class. Also, switch
statements on the class type are used instead of delegation. Finally,
the ReaderT was refactored to Kleisli and more functionality was added.
Merge branch 'feature-restructure-types' into develop