`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.
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
Change ufuncify and autowrap signature

Kwargs now default None, not ().
Underscored the templates and a few lint fixes.
Merge pull request #6 from moorepants/jason-ufuncify

Underscored the templates and a few lint fixes.
Merge pull request #7929 from jcrist/ufuncify_improvements

`ufuncify` makes actual ufuncs