BUG: Error checks for the dtype shape.

Also creates a clean tuple for the shape tuple, instead of
passing potentially mutable objects through.

Closes gh-4009
DEP: Deprecate boolean `-` operations

Boolean - is not well defined, especially the unary and
binary operator are not compatible. In general boolean
minus seems to have no real application and does not do
what might be expected.

All "allclose" type functions (numpy, tests, masked) have to
now check for boolean to avoid the deprecation warning. In
the future one could think about removing it again and just
allowing the upcast.
BUG: Fix performance regression for PyObject_Get/SetItem

Also restructures the calling conventions a little to channel
all calls through the general functions, this will add a little
overhead and could be streamlined if necessary.
ENH: hint that nelem == 1 branch is more likely

improves performance for simple takes by 10%, chunked takes spend more
time copying so the less dense code matters less.
ENH: explicitly mark invalid index branch as unlikely

gcc already detects this as unlikely but it might profit other
compilers.
Merge pull request #4296 from juliantaylor/fasttake-microopt

minor fasttake performance improvement
BUG: Raise some out of bound negative index in PySequence_GetItem

PySequence_GetItem and PySequence_SetItem already fix a negative
index, so that we do not need to fix it as well.

Also clean up a little/doc fixes
BUG: Fix wrong variable in test_build.py exception.

The variable used was not defined, causing an error when the exception
was raised.

Closes #3146.
Merge pull request #4289 from seberg/speed-regression-fix

BUG: Fix performance regression for PyObject_Get/SetItem
Merge pull request #4298 from charris/fix-gh-3146

BUG: Fix wrong variable in test_build.py exception.
Merge pull request #4095 from seberg/descr-shape

BUG: Error checks for the dtype shape.
BUG: Force allclose logic to use inexact type

Casting y to an inexact type fixes problems such as
abs(MIN_INT) < 0, and generally makes sense since the allclose
logic is inherently for float types.
Merge pull request #4105 from seberg/deprecate-boolean-math

DEP: Deprecate boolean math operations