ENH: optimize srcstride0 copy with O3

enables autovectorization with gcc and improves performance by about 25% for cached data.
FIX: items/keys iterators in 3k, list wrapping
DOC: Link convolve with polymul

Matlab uses `conv` for both convolution and polynomial multiplication. Clarifying that numpy has functions for each.
ENH, MAINT: Check that covariance is positive-semidefinite.

numpy.random.multivariate_normal uses SVD to obtain the covariance
square root, but the result will be incorrect if the covariance is not
positive-semidefinite and no warning will be given. However, a check can
be made even while using the SVD by checking if the rows of u.T and v
have the same sign, where u and v are given by u, d, v = svd(a).

A deprecation warning is also fixed. When the default size was used an
empty list was passed to multiply.reduce, which resulted in a default
float 1. for a shape index. That is no longer legal. The problem is
fixed by using an array reshape, which also avoids potential overflow in
the original computation.

Closes #4489.
TST: Add some tests for random.multivariate_normal.

Explicitly Test that the default shape does not raise a
DeprecationWarning.

Check that a covariance matrix that is not positive-semidefinite
raises a RuntimeWarning.
DOC: Note new random.multivariate_normal warning in release notes.
Merge pull request #4522 from ninjin/master

FIX: items/keys iterators in 3k, list wrapping
Merge pull request #4490 from charris/fix-random-multivariate-normal

Fix random multivariate normal
Merge pull request #4512 from juliantaylor/opt-srcstride0-copy

ENH: optimize srcstride0 copy with O3
BUG: fix broken operand initialization for einsum.

Closes #4528.
Merge pull request #4533 from charris/redo-gh-4529-commit-message

BUG: fix broken operand initialization for einsum.
BUG: fix uninitialized use of size 1 reductions

Size 1 reductions do not intiialize the iterator fully as normal
reductions which triggers uninitialized use in NpyIter_IsFirstVisit.
To fix this check the size of the iterator and return true if it only
has size 1.
Merge pull request #4535 from juliantaylor/itersize-1

BUG: fix uninitialized use of size 1 reductions
Merge pull request #4071 from endolith/patch-1

DOC: Link convolve with polymul
BUG: nditer: Initialize buffer reduce pos

The FirstVisit function uses this, but when the reduction is
over a single element it isn't considered a reduction. This is
fine, however the reduce pos must still be initialized to 0 in
that case. Also changes the check order so that it is not
necessary to initialize the outerstrides as well.

See also gh-4134, and gh-4535.
Merge pull request #4538 from seberg/size1_reductions

BUG: nditer: Initialize buffer reduce pos