Support masked arrays in gaussfit

Hi again! Thanks for merging the last patch. This patchset does a few things:

* This supports fitting to masked arrays in gaussfit(). Masked arrays are about 50% slower than unmasked arrays. The performance penalty for unmasked arrays is minimal.
* It constrains the rotation angle [0, 360).
* Adds some tests. They can be invoked with `python -m unittest discover` from the repository root.
For pep8's sake, perhaps:
```
twodg = twodgaussian(p, circle, rotate, vheight)
delta = (data - twodg(*np.indices(data.shape))) / err
```