Reverse implemented using foldLeft and foldRight
Refactored method names:
    foldLeft  -> foldLeftTR	(fold left tail recursive)
    foldRight -> foldRightNTR	(fold right not-tail recursive)
Changed description of tests to be more meaningful
Implemented a non-tail recursive foldLeft and tail-recursive foldRight.
Created a default implementation of foldLeft and foldRight which uses
foldLeftTR and foldRightNTR underneath. Other methods like sum, product,
length, reverse etc use this default implementation.
Implemented foldLeft using foldRight and vice versa.
Append implemented using foldRight.
Append using foldLeft skipped, because couldn't think of an
implementation.
Concatenate implemented using foldRight
Map implemented.
Refactored map to use a curried definition.