Add partition, partitionAll, and 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.
Add compareNestedArray:with: for test

Swift can't compare [[1], [2]] == [[1], [2]] so along with some other compiler bug workarounds
this should allow us to test partition{,All,By}
Fix partition padding edge cases

Partition with a nil pad is actually different than partitionAll.
partition stops iterating and pads at the first partition less than n
partitionAll continues partitioning until it has reached the last step.
Combine overloaded partition functions via default

Instead of overloading the partition functions with various method
signatures allow applicable arguments to be left out.
Merge pull request #5 from zolrath/master

Add partition, partitionAll, and partitionBy