Merge pull request #1672 from smichr/3531

3531: sympify IndexedBase and Idx args
NaN doesn't need to subclass Float; updating NaN tests
Merge pull request #1360 from Krastanov/rewrite

Reformat the Basic.rewrite docstring
Merge pull request #1667 from rlamy/sympify-Matrix

Make Matrix sympifiable.
Merge pull request #1675 from jrioux/simplify

Fix simplify issue 3476
Merge pull request #1677 from FireJade/fnan

Replacing fnan with symbolic NaN
Merge pull request #1633 from mrocklin/unify

Unify
Merge pull request #1671 from smichr/iter

iterables fixes, edits and coverage
Add Colleen Lee to AUTHORS/aboutus. Welcome to SymPy!
allow Float to get prec from mpf tuple
make _to_mpmath respect prec for Numbers

The added tests now show that expressions and numbers both
respect the requested precision for the mpmath quantity that
is returned.  Formerly, the Float would still have full precision
(last digit was 52).
use FNAN and FZERO
Float(Integer) -> Float

0 is special-cased and will always return S.Zero
Merge pull request #1678 from smichr/float

Float
Merge pull request #1661 from ottersmh/1dsho

1D Simple Harmonic Osc. Quantum Operators
3533: nfloat fix

A proper evaluation of an expression cannot be done by substituting
evaluated numbers into the expression as a result of precision issues.
Instead, numbers must be evaluated in groups, e.g. (sqrt(3) - sqrt(2)).n()
rather than sqrt(3).n() - sqrt(2).n(). Often this doesn't matter much,
but as the added test shows, it does matter.

evalf needs a serious overhaul to make this right, too, since if evalf
(instead of nfloat) is used on the added expression for this issue, the
same mistake occurs. This is because _matches_commutative deals with
args arg-wise (instead of in lumped args which are all numbers).

The way evalf should work, I believe, is:

1) expr.evalf()
  a) expr.is_number is False
    i) if subs given, then do the subs thing in evalf
    ii) else call to expr._eval_evalf (with n, not prec) to find the
       numbers and pass them back to evalf and replace them in the
       expr; if there is not expr._eval_evalf routine use the Mixin
       routine, changed to apply evalf to each of the args (rather
       than returning None as now).
  b) normal evalf when expr.is_number
3533: fix for Add/Mul evalf
simpler 3533 nfloat fix
use _aresame in xreplace test of equality

It is possible that A === B even though A and B are not structurally the
same, so the more strict _aresame() is used to test for exact equality.
remove more references to Float(nan)