Make functions for checking null or undefined more consistent

- made checks strict for null and undefined
- added isSome and isNone for null or undefined
Make Functions.compose binary function
Fix application of functions in compose
Add lens module
Remove assertions

- overcomplicated and want to change to macro enabled assertions in
  build
Add spec for lens composite keys using indices
Add QM.orElse
Rename QM.orElse to QM.either
Add Functions.curry