initial implementation of sympy.physics.quantum.pauli, containing the pauli sigma operators and states that they act on
made pauli operators commute with boson operators
fix bug in use of warnings module. improved support for normal ordering expression of products of mix of differetnt types of operators
improved support for simplification of products that includes an identity operator
Fixed bug in handling of non-operator base Pow instances in sympy.physics.quantum.operatorordering
support for indices for Pauli operators the in quantum.pauli module
`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.
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.
Don't use new assumptions in the sets module
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
Fix some asserts to check if foo.contains(bar) is S.true
Remove .is_infinitesimal assumption
Codewrappers infer/validate language from backend

In `autowrap` and `ufuncify`, the `language` kwarg now defaults to
`None`. In this state, the language is inferred from a lookup table of
backend -> tuple of languages, with the highest preference first. If the
language is specified, it is validated using this same lookup. This
prevents specifying `backend='f2py', language='c'`, and also allows the
user to only specify the backend to change behavior.

Also made some touchups to docstrings and tests.
Merge remote-tracking branch 'upstream/master' into ufuncify_improvements

Conflicts:
	sympy/utilities/autowrap.py
Cache calls to `ufuncify`

- `ufuncify` is not cached
- Small fix to `autowrap` docstring
Merge pull request #7989 from skirpichev/contains

Implement a symbolic object for the relation "is an element of"
Merge pull request #7995 from skirpichev/remove-is_infinitesimal

Remove .is_infinitesimal assumption
fix is_zero detection on Mul._eval_is_* tests

Once a None is obtained for is_zero, it should no longer be updated.
The return value must consider the value of is_zero. This can
change if S.Zero.is_imaginary = S.Zero.is_real = True is ever true.

The routines were shortened a bit, too.
Small improvments for Mul._eval_is_real/imaginary

1. removed fuzzy_not import (it's redundant)
2. slight formatting changes
3. add an early exit if t is not a complex number
4. renamed: is_zero -> zero (like the real variable)
5. simplify "if real and is_zero is False" branch of _eval_is_real