keep floor(i) unchanged if i is imaginary symbol
`ufuncify` makes actual ufuncs

This is a rough pass at getting ufuncify to make actual ufuncs. It
works, but needs some cleanup, optimizations, tests, and documentation.
Changed __add__ to return the correct phase for the addition of two TWave objects
change warning flag to warn in line with code
test non-linear equations in _solve_system
cache autowrap
add pi/2 awareness to piecewise of Ray when giving arbitrary angle
Merge pull request #7921 from smichr/real3

keep floor(i) unchanged if i is imaginary symbol
fixed docstring tests
Merge pull request #7979 from smichr/geom

add pi/2 awareness to piecewise of Ray when giving arbitrary angle
Fix the MathJax CDN

The old CDN gives 404. We also need to go in the docs repo and retroactively
fix all built docs there.

Fixes #7983.
change docstring to reflect preference for tuples over lists
Ufuncify backends, code cleanups

- Brought back backends for F2Py and Cython. These now support
  broadcasting on all arguments, but mandate that the arguments be
  1-dimensional arrays of the same length.
- Default backend is the new `numpy` backend, which creates actual
  `ufunc`s.
- Code cleanups, improved docstrings, added tests.
test_code_quality shows no errors
manually revert 4346424be94ff3e0a4a4fbfc5a6f35a3a0009d5a
Don't use new assumptions in the sets module
fix tests for zero=True symbols
Merge pull request #7978 from pbrady/cacheit_autowrap

cache autowrap
Implement a symbolic object for the relation "is an element of"

1. fixes #6194
2. contains methods of set classes were modified to return
   BooleanAtom's, not True/False
Printing support for Contains class