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
ENH: add tobytes and stop using tostring in documentation

tostring returns bytes which are not equal to string, so provide a
tobytes function alias.
tostring does not emit a deprecation warning yet so rdepends do not need
to check two names to support older versions of numpy without warnings.
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.
TST: bootstrap chroot in tmpfs

during bootstrap eatmydata is not available in the chroot so it takes a
significant time. Avoid this by placing the whole chroot in a tmpfs
ramdisk.
Merge pull request #4292 from juliantaylor/ramdisk-chroot

TST: bootstrap chroot in tmpfs
BUG: fix NULL dereference on longdouble conversion error

Closes gh-627
Merge pull request #4294 from juliantaylor/fix-longdouble-int

BUG: fix NULL dereference on longdouble conversion error
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.
Merge pull request #4257 from juliantaylor/tostring-depr

ENH: add tobytes and stop using tostring in documentation
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
TST: avoid opening files twice which doesn't work on windows