Added docstring to lambdified functions

If arguments have names, that is used. Otherwise the stack is inspected
to determine if the name can be inferred *with certainty*. If there is
more than one variable pointing to the object, then the name cannot be
determined with certainty, and 'arg_#', where '#' is the number of the
arg is used.
Vector pretty print test fix. Fixes issue #7679.
pretty_symbology: Don't assume the output of U() is not None

U() returns None when unicodedata can't be imported. I'm not sure how to test
this because it's only reproducible if unicodedata from the standard library
can't be imported.  I suppose we could add a hook to test it. It won't be
straight-forward though because the key thing is to make sure it works
correctly at import time.

Fixes #8163.
Merge remote-tracking branch 'upstream/master' into lambdify_docstring

Conflicts:
	sympy/utilities/lambdify.py
Added expression printing to lambdify docstring

If the expression is less than 78 characters, the whole expression is
printed. Otherwise, the first 75 characters are printed, followed by
'...'.
Fix automatic evaluation for sin/cos(pi*n/2): consider n.is_even case

fixes #8298
Merge pull request #8003 from jcrist/lambdify_docstring

Added docstring to lambdified functions
Fix vector printing tests in Python 2

This uses u_decode instead of u, which is what the regular pretty printing
tests use.
Merge pull request #8164 from asmeurer/unicodedata

pretty_symbology: Don't assume the output of U() is not None
Sympify SparseMatrix

Converts to ImmutableSparseMatrix now. Fix for #8283.
Merge pull request #8303 from skirpichev/8298-fix

Fix automatic evaluation for sin/cos(pi*n/2): consider n.is_even case
Merge pull request #8310 from jcrist/issue_8283

Sympify SparseMatrix
Merge pull request #8313 from asmeurer/vector-pretty

Vector pretty
Merge pull request #8311 from smichr/wip

fix nroots sorting and misc changes
modify roots_binomial and roots_quadratic

These two routines supply roots to _roots_trivial which expects
the results to be in the same order as the RootOf instances. Although
the sorting could take place in _roots_trivial, all the information
about the roots is in these routines so it makes sense to sort them
in that information-rich context. In order to keep this fast, no numerical
calculations are made.

Sorting is a slow operation and was added to get consistent results
from these routines (all roots_foo in polyroots). Now that Add's args
are not sorted by hash this is no longer an issue, so sorting is
now a private option to these private functions but is left True.

TODO remove sorting from all routines (issue 8294).

An advantage to not sorting is the freedom to fail to return items
in any sorted order. Nonetheless, when the domain is ZZ the roots
will be sorted (reals first, then non-reals according to real then
imaginary parts) and that is what is important to _roots_trivial.
cache _roots_trivial

Without caching, the roots have to be recomputed each time a new
indexed value of a RootOf instance is requested.
reverse roots in inequalities; add tests
Add Michael Gallaspy to AUTHORS/aboutus. Welcome to SymPy!
8285,8289: further refine complex intervals while sorting

Polynomials having complex roots with a real part of 0 have
to be handled separately since they will never become horizontally
disjoint from each other. The only way that a pure imaginary root
can occur is from a binomial factor. For ax**2 + b the roots will be
imaginary when a*b > 0 and for ax**(2**i)+b for i > 1 two roots will
be imaginary if a*b < 0.

Watch out for issue 8316; raise NotImplemented for this case.