ENH: Added binary_mask as input parameter for grid3d

This is the a mechanism that I came up with for masking
bad regions of images that I think @tacaswell will agree with.
The other approach would require masking before process_to_q.  If
we go down that route, then process_to_q will need to take in the
image stack again.
and the other option is to up-cast to a (N, 1) array which will broad cast correctly
```
q = (q * np.ravel(binary_mask).reshape(-1, 1)).nonzero()
```
However, I don't think `nonzero` does what you want here, it return the indices of the nonzero entries, not the nonzero values.

http://docs.scipy.org/doc/numpy/reference/generated/numpy.nonzero.html