ENH, MAINT: Use an abstract base class for the polynomial classes.

The new base is ABCPolyBase and is intended to replace the use of the
polytemplate string.  In this way the need to compile the polynomial
classes on import is avoided.

Closes #634. Closes #3639.
DOC: Cleanup polyutils.py module documentation.

Also note that PolyBase is no longer to be used.
DOC: Fixup documentation for new way of generating classes.

Move the class documentation to the place of definition in the
appropriate module. This allow for documenting the specific series kind
along with the series specific default domains and windows

Remove template placeholders from the ABCPolyBase class documention.

General fixup of documentation that rendered poorly.
DOC: Document change of polynomial classes base class in release notes.
DEP: Deprecate the numpy/polnomial/polytemplate.py module.

Make the version of its removal Numpy 1.10.0.
DOC: remove obsolete NA reference from polyfit docs
Merge pull request #4531 from charris/polynomial-abstract-base

Use polynomial abstract base instead of template.
Merge pull request #4566 from juliantaylor/na-doc

DOC: remove obsolete NA reference from polyfit docs
ENH: optimize array creation from homogenous python sequences

Instead calling PyArray_DTypeFromObjectHelper for each item in a
sequence, check if all items in the sequence are of the same scalar
type, if this is the case we only need to recurse on one item.
Also use the PySequence_Fast API to avoid expensive function calls for
the common case of lists or tuples.

np.array(range(10)) improves about 25%
np.array(range(100)) improves about 40%