better underscore completion

While poking around matplotlib today, I noticed that IPython doesn't complete on attributes that start with an underscore.

Simplest example to reproduce this behavior on master:

```python
class A(object):
    pass
a = A()
a._x = {}
```

`a._x.<tab>` doesn't return anything on master. This PR adds the necessary changes to make this work and also adds a test for it.