Fixing void scalar PyArray_Scalar constructor when *base==null.

During call to `PyArray_scalar` a `PyVoidScalarObject` is created, and
it's `obval` field set to a newly allocated block of memory of the
correct item size. With a null `base` member, the subsequent call to
`copyswap` can not determine an item size and returns without copying.
Adding direct copy of input data if no `base` is provided, as no swap is
required.

Adding regression test for constructor and original pickle repro case.

Resolves numpy/numpy#1550.
MAINT: Cleanup some imports involving reduce.

Because reduce has been available in functools since Python 2.6 we
can get rid of the version checks we currently have before we import
it.

Also removes some reduce related skips in tools/py3tool.py. We were
already skipping the reduce fixer so this has no effect other than
cleaning up the code.
2to3: Apply `print` fixer.

Add `print_function` to all `from __future__ import ...` statements
and use the python3 print function syntax everywhere.

Closes #3078.
Merge pull request #3203 from charris/2to3-apply-print-fixer

2to3: Apply `print` fixer.
Resolving void scalar PyArray_Scalar constructor style issues.
Merge pull request #3202 from charris/2to3-reduce-fixups

MAINT: Cleanup some imports involving reduce.
Merge pull request #3188 from asford/master

Fixing numpy.void pickling.