Changed GUI exceptions to catch NeXusError

A NeXusError, which should normally mean that an inappropriate action
was requested, will trigger a message window. Other exceptions should
be actual bugs, for which console tracebacks are important.
Added an import to numpy.ma as ma

Useful now that we are implementing masked arrays.
Added support for masked arrays

This has required adding an extra attribute, 'mask', to point to a
Boolean mask array.
Changed version to 0.2

Advanced preparation - the use of masked arrays warrants a minor
version number change.
Minor reformatting
Added support for masked data

If an NXfield is in an NXgroup, an extra NXfield is created to contain
the mask. Otherwise, it is stored within the in-memory file or the
NXfield array is converted to a masked array.
Added mask buttons to the Projection Panel

It turns out that the UI for defining masks is very similar to the UI
for defining projections, so I have combined both within the same panel.
Merge branch 'masked-arrays'