BUG: fix tab completion
Currently tab completion doesn't work on attributes defined on the instance, only ones defined on the class. This fixes that.

Example:
```python
>>> class MyCls(pd.core.accessor.DirNamesMixin):
...     x = 1
... 
...     def __init__(self):
...         self.y = 2
...
>>> x = MyCls()
>>> "x" in dir(x)
True  # master and this PR
>>> "y" in dir(x)
False  # master
True  # this PR
```

Also some type fixups.