Change behaviour of `masked=None` for read()

 - If `out` is supplied, the use of a mask respects this array type
 - Otherwise, masked is determined if any of the nodatavals are not None
 - Dimensions of `out` (if used) are checked, and raise ValueError if
   not expected (this didn't work previously)
 - Reflect above changes in test_read.py
 - Complete function documentation for `read()` in code (but not elsewhere)

See #71 for context of discussion.