First pass at integrating Knuth's algorithm M into
iterables/multiset_partitions.

On branch 3563_multiset
Changes to be committed:
	modified:   sympy/utilities/iterables.py

Author:    rathmann
Fixing whitespace, per smichr's comments.
Still need to do docstrings and tests.

On branch 3563_multiset
	modified:   iterables.py
Adding some simple tests to get coverage of the new code.  Will have
to change these if/when the API changes, but these tests are very
simple, so that is no big deal.
Attempt to fix Sphinx tests.  I have not yet figured out how
continuation lines work for the Sympy live blocks, so I did this at
the cost of a couple of long lines in the docsting.  TODO

	modified:   sympy/utilities/iterables.py
Adding range-restricted enumerations, and counting to this pull
request.  Some basic tests, but more are needed.

new file:   enumerative.py
    Now contains all implementations
modified:   iterables.py
    moved multiset_partitions_taocp to enumerative
new file:   tests/test_enumerative.py
    at least a start on tests.
modified:   tests/test_iterables.py
    moving some tests into test_enumerative
modified:   enumerative.py

Remove vestigal decrement_part_small_old() method.  Tweak comments.
Fix import and naming in failing doctest.
modified:   sympy/utilities/enumerative.py
Use izip instead of izip_longest, since izip_longest is not available
in 2.5.

Also wire in the doc generation for the new file.  (Although the docs
themselves still have a long way to go.)
edit docstrings and codestyle
A few edits to your edits...

added the asked-for description of f, lpart and pstack (at least starts for)

terminology: used components instead of elements, for multisets

Notes on count partitions: I meant in-order traversal (as opposed to
pre-order or post-order or breadth-first).

Thanks for the examples.

Style question: I had thought that the second line of a docstring was
supposed to be blank?  (E.g., your edit of multiset_partitions_taocp()
docstring -- am I out of date on this?)

	modified:   enumerative.py
Updated doc strings and doc for enumerative.py.
Tried to follow https://github.com/sympy/sympy/wiki/Writing-documentation
although this does not fully follow that yet.
Minor doc formatting changes.
Added multiset_partitions_baseline() - a (simplified) version of
smichr's set-partition-based multiset partitions code for use as a
sanity test and comparison.

Added a test using this baseline version.

Added a larger test case to the subrange test - some of the code paths
are only exercised with large multisets.

	modified:   sympy/utilities/tests/test_enumerative.py
More modifications to docstrings and module .rst file.

	modified:   doc/src/modules/utilities/enumerative.rst
	modified:   sympy/utilities/enumerative.py
Modified smichr's nT function to use MultisetPartitionTraverser
 modified:   sympy/functions/combinatorial/numbers.py
 modified:   sympy/utilities/enumerative.py
Fix corner case.  No 0-length partitions allowed.
More corner cases on enum_* methods.   Otherwise minor tweaks to comments.
In docstring for multiset_partitions_taocp: Returns ==> Yields
sympy/utilities/enumerative.py
	Lots of edits to comments, including adding discussion of
	ordering relation on parts at the top of the file.
	A few tweaks to docstrings

sympy/utilities/iterables.py
	Wire in enum_range() into multiset_partitions
	Tweaks to comments
Minor tweaks to comments.

Main reason for this change is to make sure that this PR merges OK, and  has not gone stale.

On branch 3563_multiset
	modified:   sympy/utilities/enumerative.py