ENH: disable OpenBLAS affinity settings

OpenBLAS starts as many threads as it can and assigns them to cpus
This includes the main thread Python is running in.
This means any threads or processes Python starts must all share this
cpu, nullifying any parallization efforts.
Luckily this behaviour can be disabled via an environment variable which
we need to set before loading dotblas which may be linked to OpenBLAS.
Libraries loading BLAS before numpy are stills screwed.
Merge pull request #4580 from juliantaylor/openblas-affinity

ENH: disable OpenBLAS affinity settings
MAINT: Refactor numpy/polynomial/_polybase.py

1) Clean up the code and move repeated snippet to a method.
2) Remove use of has_sametype, has_samewindow, has_samedomain. I would
   like to deprecate those methods.
3) Fix error in __truediv__, and make it only allow non-boolean numbers
   for the denominator.

Closes #4631.
BUG: Fix __truediv__ bug in polytemplate.py file.

The use of polytemplate is deprecated, this fix is only for a backport
if needed.
TST: Add tests for the polynomial classes true division.
DOC/FIX: Fix error in documentation

Remove misleading note about equivalency betwen column_stack and
np.vstack(tup).T.

Fixes #3488
BUG: Fix use of setuptools.command.install._install.

This private variable has disappeared in later versions of setuptools.
In older versions of setuptools it is the same as
distutils.command.install.install, so use that instead.

Closes #4664.
Merge pull request #4667 from charris/fix-numpy-distutils

BUG: Fix use of setuptools.command.install._install.
Merge pull request #4633 from charris/fix-polynomial-true-division

Fix polynomial true division
Merge pull request #4666 from ElDeveloper/issue-3488

DOC/FIX: Fix error in documentation
FIX: Make object comparison ufuncs not include identity check

The issue here is that PyObject_RichCompareBool does an identity
check before doing any other checks. This is good, and is the
way for example list comparisons are handled. However in numpy
comparisons are elementwise, so that the identitycheck should
not be expected. The example for this is as follows:
obj_array = np.arange(3)
a = np.array([obj_array, 0], dtype=object)
np.equal(a, a)
If an identity check is done, this returns [True, True]. But
obj_array == obj_array itself cannot be cast to a bool.

While this is slightly slower, not doing the identity check seems
more logical in the light of elementwise operations.

Closes gh-2117.
DEP: Deprecate that comparisons ignore errors.

This means that for example broadcasting errors get raised.

The array_equiv function is changed to explicitely test
if broadcasting is possible. It may be nice to do this
test differently, but I am not sure if that is possible.

Create a FutureWarning for comparisons to None, which
should result in areal elementwise (object) comparisons.

Slightly adepted a wrong test.

Poly changes: Some changes in the polycode was necessary,
the one is probably a bug fix, the other needs to be
thought over, since len check is not perfect maybe, since
it is more liekly to raise raise an error.

Closes gh-3759 and gh-1608
DOC: Add (object) equality changes and error raising to release notes
DEP: Deprecate identity check in comparisons (not just removing)

Instead of just removing it, raise Deprecation/Future warnings
when the comparison object ufunc and the identity check do not
coincide.
MAINT: Comparison deprecation followup fixes

Makes the identity check `a = np.array([np.nan], dtype=object)`
`a == a`, etc. a deprecation/futurewarning instead of just
changing it.
Also fixes some smaller things.