Complete re-write of the library - yet again!

Starting to implement laws for testing
Adding applicative struct for the laws
Starting to implement monadic laws

- Added applicative laws
- Adding a function type to make it easier to call functions dynamically
- Lots of changes

Update README.md