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