BUG: field assignment in masked array did not reset mask; closes #2403

The previous behavior when setting a field after indexing to
select an element was suitable for the hard mask case, but
not for the default soft mask.  In addition, the _hardmask
value was not being set at all in the mvoid instance.  With
this changeset, the _hardmask is passed in and __setitem__
takes it into account.
Merge pull request #3449 from efiring/mvoid_setitem

BUG: field assignment in masked array did not reset mask; closes #2403