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.
What I meant was this. `__array_interface__` is basically just one way to define an "array-like". So this function currently does not support most array likes out there at all (for example memoryviews, etc.), since they implement the buffer interface instead. To really support this, I think we should (first thing), call:
```
x = np.asanyarray(x)
```
here. After you have done that, `__array_finalize__` is guaranteed to be defined. We will guarantee to return an array and not some array-like, which can be seen as an advantage or disadvantage. But I think I am fine with returning always an array (or array subclass here). On the other hand, the pandas guys might disagree?