ENH: Cleanup and simplify array_item code.

Rename array_big_item to array_item_asarray and move special case
for array_item_nice into array_item_asscalar. Also remove redundant
PyArray_Return and rename array_item_nice to array_item.

Conflicts:
	numpy/core/src/multiarray/mapping.c
ENH: Move fancy indexing code and ellipse check code into own functions.

Conflicts:
	numpy/core/src/multiarray/mapping.c
ENH: Use array_subscript_asarray to ensure an array type return value
ENH: Move Python related subscript code into array_subscript
ENH: Rename array_subscript to array_subscipt_fromobject and refactor array_subscript_nice to array_subscript

Conflicts:
	numpy/core/src/multiarray/mapping.c
ENH: Change silent integer conversion failure into index error.
ENH: Optimization in subscript_simple for arrays with size > 1
ENH: Rename array_ass_big_item to array_ass_item_object
ENH: Cleanup subscript assignment code.

Conflicts:
	numpy/core/src/multiarray/mapping.c
BLD: Declare array_ass_item_object before use.
ENH: Small optimization for redundant PyArray_Check

Conflicts:
	numpy/core/src/multiarray/mapping.c
BUG: Tuple conversion may not propagate errors from int conversion.

Conflicts:
	numpy/core/src/multiarray/mapping.c
ENH: Optimize array_subscript by removing redundant error check.
ENH: Change IndexError to ValueError for integer conversion errors.

Conflicts:
	numpy/core/src/multiarray/mapping.c
TST: Add more indexing tests.
BUG: Multiple fixes from merging.
STY: Text changes.

Conflicts:
	numpy/core/src/multiarray/mapping.c
BUG: Fix old case for boolean subscripts with non-matching shape.

Conflicts:
	numpy/core/src/multiarray/mapping.c
DOC: Re-insert comment
BUG: Fix failing subscript test cases

This fixes indexing with NumPy boolean scalar values, which caused
crashes before. Both Python and NumPy boolean scalars now behave the
same. This contains a few small changes to PyArrayMapIterNew, where
the PyArrayMapIterObject is memset to zero and a fix for the crash,
which was caused by _nonzero_indices, which did not initialize any
iterators because ndim is zero for scalars. *IterNew will now check
for scalars before running that part of the code.