BUG: Fix array_split empty array type and add FutureWarning

Fixes the result type of empty output arrays.

The FutureWarning warns about changed behaviour. A "kludge" was
introduced into array split converting converting the result of
something like:

>>> np.array_split(np.array([[1, 1]]), 2)
[array([[1, 1]]), array([], dtype=int64)]

instead of retaining the shape of the empty/second array to
be (0, 2). A FutureWarning is now raised when such a
replacement occurs.

Closes gh-612
BUG|API: Raise wrong arg{min|max} out shape and stricter check

The error was not raised when the output array size did not match
the given out array causing segfaults if the out array was smaller.

This also makes the shape check strict and changes the error
to a ValueError. The shape check could be relaxed for leading
ones. ufuncs and assignments do this.
Merge pull request #4103 from seberg/issue-616

BUG|API: Raise wrong arg{min|max} out shape and stricter check
Add lexsort support for datetime and timedelta
Merge pull request #4133 from ContinuumIO/datetime_sort

Add lexsort support for datetime and timedelta
Merge pull request #4102 from seberg/issue-612

FIX: Array split should not hack empty array shape away