BUG: Fix broadcasting in np.cross (solves #2624)

Changed np.cross to move the axis it's operating on to the end, not the
beginning of the shape tuple, and used rollaxis, not swapaxes, so that
normal broadcasting rules apply.
There were no tests in place, so I added some validation of results and
broadcasted shapes, including the one reported in #2624
TST: Added out of bounds axis checking to the tests.
ENH: Minimize temporary intermediate arrays using a preallocated
     output array and in-place operations.
DOC: Added 'Supports full broadcasting' note to the docstring.
DOC: Added note to 1.9.0 release notes
Merge pull request #4338 from jaimefrio/cross-broadcast

BUG: Fix broadcasting in np.cross (solves #2624)