Add Chaining, and Curry support.

Chaining, Service Provider, Curry, and added a new each function. Refactored: renamed Functional<T> to F<T>. Added better argument validation. Moved some functions from F<T> to F, and others from F to F<T>. Goal is to have F<T> contain generic functions, and F to contain non-generic functions.