ENH: add BagObj.__dir__ to numpy.lib.npyio

This allows dir(bagobj), and also enables tab-completion on a BagObj, which can be useful in an interpreter or IPython:

```python
>>> dat = np.load('mydata.npz')
>>> dir(dat.f)
[]                 # Before this PR
['a', 'b']         # After this PR
>>> dat.f. ⇥ ⇥     # TAB TAB to see completions
                   # blank before this PR
dat.f.a  dat.f.b   # after this PR 
```

This PR has two commits: one makes the change above, the other adds a test of `BagObj`. This test tests both the main functionality of BagObj (`BagObj.__getattribute__` was not previously tested according to `runtests.py --coverage`), as well as testing this enhancement.

Also, this is my first PR to numpy, so please feel free to give me any helpful advice you'd like!
Put the `"""` on a new line after a blank line.