Add a newline to the output of compute_known_facts.

The code produced by the said function is normally directly put into
ask_generated.py, so if compute_known_facts does not produce a newline,
there is none at the end of this file.
Tell the user that ask_generated.py is automatically generated.

This commit adds a remark at the beginning of ask_generated.py which
refers the user to compute_known_facts.
Add a short notice on how to invoke compute_known_facts.

I believe this short notice may be helpful for those who will try to use
compute_known_facts for the first time.
Regenerate ask_generated.py.

Apparently, due to hash randomisation, compute_known_facts produces the
same facts but in a different order.
Fix some grammar mistakes.

And also regenerate ask_generated.py.
Merge pull request #1652 from scolobb/compute-known-facts-newline

Add a newline to the output of compute_known_facts.
3512: watch for Rational in Mul.flatten

use custom _rgcd since gcd is so slow compared to igcd

TODO: fix gcd to be faster
timeit('gcd(S.Half,S.Half/2)','from sympy import S,gcd',number=1000)
0.52889084815979
>>> timeit('S.Half.gcd(S.Half/2)','from sympy import S',number=1000)
0.4783451557159424
>>> timeit('Rational(igcd(a.p,b.p),ilcm(a.q,b.q)),S.Half,S.Half/2','from sympy import S,igcd,ilcm,Rational\na=S.Half;b=a/2',number=1000)
0.05117201805114746

mit message for your changes. Lines starting
patch multiset_partitions
multiset_partitions modifications

o watch for short partitions which happens if a bin
  index in `a` goes to zero and then not all indices of bins
  are present -- this is perhaps a bug, but for now this check
  is done in visit

o if there are repeated elements or if they are not hashable
  only the unique partitions will be returned

o use a set rather than a dictionary for cache

o don't pass around variables that are not used (sigma defaults to
  zero, n and a never change).
replace broken multiset_partitions

This is a little gem. Perhaps the Knuth routine is better when it's
correct, but this little version (even though it generates all
partitions and the desired one must be selected) is pretty nice.

The table below shows the number of unique partitions obtained
by paritioning n items into 4 groups; the time is also indicated.

n P  time(s)
5 10 0.0
6 65 0.0
7 350 0.01
8 1701 0.03
9 7770 0.11
10 34105 0.62
11 145750 3.82
12 611501 18.28
partitions gets size flag; multiset can return all partitions
use ordered in meijerint _mul_as_two_parts

ordered is used in the doctest, not the routine, thus allowing
the calling routine to handle the desired ordering

In `meijerint_indefinite`, ordered is also used with next to
just return the first element of the (perhaps) reordered
results.  It's not necessary to convert the iterator to a list
to do this.
add next to compatibility
change nexequ to be 0-based; optimize multiset_partitions

When multiset_partitions is given a list that contains only
1 repeated element, `partitions` is used to generate the partitions
and then the enumerated multiset is returned.

nexequ is now exposed as a private function named _set_partitions and
was re-written to be 0-based.
add to documentation about the different partition functions
allow uniq to handle non-hashables

It is now iterator friendly, too, not exhausting the iterator before
starting to return results. This is important if one expects to break
after a certain value is seen for the first time.
replace error-triggering tests with more precise expression

 The exact output might vary, but this formerly raised an error
 because of how the gcd was being computed. The evaulate=False
 is being used because otherwise automatic evaluation will change
 the expression, and the error is not triggered in that case.
 This is not the exact issue 3512, but one that was identified in
 that issue.
Merge pull request #1665 from smichr/3512

3512: watch for Rational in Mul.flatten
fix uniq doctest for py 2.5
add note about partition counting