BUG: INCREF before DECREF when copying object arrays.

Only the change in dtype_transfer actually seems to be
related to the simple np.copyto(a, a) bug, when a is a scalar
object array.
It seemed however safer to me, to generally turn around the
logic, even if it may not be necessary and in one place
requires an extra temporary variable.

Closes gh-3787
DOC: adding 'Returns' section to `empty` function

This matches the format of related functions like `empty_like` and `zeros`.
Merge pull request #3794 from perimosocordiae/patch-1

DOC: adding 'Returns' section to `empty` function docstring
Merge pull request #3788 from seberg/object-copy-refs

BUG: INCREF before DECREF when copying object arrays.
ENH: Attempt to rewrite the index parsing.

Some optimizations still missing.
WIP: handle output dim calculation immidiatly
WIP/BUG: Add missing index DECREF.
WIP: Smaller fixes/moves
WIP: Clean up the error messages
WIP: Always return a view, never self
WIP: Fix error returns up.
MERGE: include old bug fix lost in merge conflict
WIP: Free view correctly for fancy indexing
WIP: Speed improvements by using EXTERNAL_LOOP
WIP: Test fixups<
WIP: Implement fast_take and some other speed things
WIP: Fixups, no-fancy indexes fancy iteration, probably more
WIP: Fixup DeprecationWarnings. Only issue remaining...

... is that a single `False`/`True` give DeprecationWarnings,
because the FutureWarning would be raised later on. I am
willing to ignore this though.
WIP,TST: Small fixes for the tests