MAINT: Remove use of compiler module.

The ast module was added in Python 2.6 as a replacement for the compiler
module. As we no longer support Python versions < 2.6, all uses of the
compiler module can be removed.
BUG: Fix writing of intrinsic long integers in python2 npy files.

This only happens when C long is smaller than npy_intp, in particular,
on 64 bit windows. The 'L' suffix is not needed as long as safe_eval
is used to recover the values, and the long intrinsic causes problems
for python3.

The python3 read side has been fixed, but we might as well fix the
problem at the root as well.
Add examples for intersect1d and union1d of more than two arrays.

The approach was suggested by Jaime Frio in issue #5179.
Merge pull request #5189 from cbrueffer/setops

Add examples for intersect1d and union1d of more than two arrays.
Merge pull request #5183 from charris/fix-npy-header-write

BUG: Fix writing of intrinsic long integers in python2 npy files.
BLD: change expected type sizes to 64 bit

64 bit is more common these days, so switch the expected type sizes to
values common on this platform. This removes a few compile tests. The
expected sizes are just hints and do not have to be correct.
BLD: fix expected size argument for complex types

The caller was passing a list of lists instead of a list with its
entries doubled. Removes the binary type search for most if not all
platforms.
MAINT: remove obsolete version checks

minimum requirement is python2.6, this allows removing a couple 2.3 and
2.4 checks.
Merge pull request #5191 from juliantaylor/config-maint

size and version check maintenance
Merge pull request #5177 from charris/do-not-use-compiler-module

MAINT: Remove use of compiler module.
MAINT: Use ast.literal_eval in safe_eval.

This does what is needed now that the compiler module is no longer
used.
DEP: Deprecate SafeEval class.

The class is no longer used in numpy and was never exported.
Merge pull request #5192 from charris/deprecate-safeeval-class

Deprecate SafeEval class
BUG: Fixed #5184 gradient calculation behavior at boundaries

* Previous expected behavior was that the gradient is computed using central
  differences in the interior and first differences at the boundaries.

* gradient was updated in v1.9.0 so that second-order accurate calculations are
  done at the boundaries, but this breaks expected behavior with old code, so
  `edge_order` keyword (Default: 1) is added to specify whether first or second
  order calculations at the boundaries should be used.

* Since the second argument is *varargs, in order to maintain compatibility
  with old code and compatibility with python 2.6 & 2.7, **kwargs is used, and
  all kwargs that are not `edge_order` raise an error, listing the offending
  kwargs.

* Tests and documentation updated to reflect this change.

* Added `.. versionadded:: 1.9.1` to the new optional kwarg `edge_order`
  documentation, and specified supported `edge_order` kwarg values.

* Clarified documentation for `varargs`.

* Made indentation in docstring consistent with other docstring styles.