Converted partition functions from tasks to iterators

* Renamed `integer_partitions` -> `partitions` (multiple dispatch!)
* Added partitions(n) variant to generate all integer partitions
* Added npartitions, nsetpartitions functions
* Updated docs

Notes
* npartitions/nsetpartitions use manual memoizing to calculate the recurrence.
* The npartitions/nsetpartitions might not be necessary to export.  They're used by length.
* These all might be better off in a package.

This should close #3989, except for the `subsets` function that Stefan suggested.