ENH: add subok flag to stride_tricks (and thus broadcast_arrays)

As is, `np.broadcast_arrays` does not preserve subclasses, even though for the shape manipulation subclasses should not be a problem. This PR adds a `subok` option that allows one to change that, but is `False` by default, so that existing code will continue to behave as is.
@seberg - I guess adding `x = np.asanyarray(x)` deals with a somewhat separate issue, but obviously it is good to ensure the code is as general as possible, and this would allow one at least to remove the `isinstance(x, np.ndarray)` stanza from the if statement below. 

I'll do that, but also a question: since with this change, we know that x is an `ndarray` subclass, might this also allow one to change the strides and shape more easily than through the `DummyArray` mechanism, so that the `dtype` and `subclass` issues get handled more elegantly as well?