Add partition, partitionAll, partitionBy

partition produces an array of arrays, each containing n elements, each offset by step (optional).
It also allows an optional padding array which will attempt to fill the last partition to n elements if short.

partitionAll allows the last partition to be less than n elements long without using padding elements.

partitionBy applies a condition to each element in array, splitting it each time the condition returns a new value.
Combine overloaded partition function via defaults

Combine method signatures of partition when able via optional parameters
which are set within the function. Unfortunately, optionals cannot be set to
equal earlier arguments within the method signature.
Merge pull request #25 from zolrath/master

Add partition, partitionAll, partitionBy