Adding EitherT

- Fixing sum types, so they reflect what a true sum type is.
- Adding foldable, need to work out the laws of foldable.