Test to see if [] and []= are defined.
Define `self` as methods/instance methods.

Instead of defining `self` as a keyword ruby-lint now defines it as a class and
instance method, both returning the corresponding definitions for their
instance types.

This ensures that if `self` is referenced either on class or instance level
that it returns the right definitions. Previously it would always return the
definition as a class.

Although this solution works I can't help but wonder what bugs it might
introduce and in general it smells a bit. Sadly the current definitions setup
doesn't really follow the way how Ruby organizes methods (using
singletons/eigen classes) but changing this would take quite some work. As a
result I'll just have to deal with this for the time being.

This fixes #80.