text: Title: Support string `SELF` (case-insenstive) when library registers itself as listener
  Body: Currently if a library registers itself to be a listener, it needs to do it like this:
  
  ```python
  class Library:
  
      def __init__(self):
          self.ROBOT_LIBRARY_LISTENER = self
  
      def start_test(self, data, result):
          ...
  ```
  
  This is somewhat annoying and also makes it impossible to configure the listener using the `@library` decorator. We should allow using string `SELF` in this case. It would allow changing the above to this:
  ```python
  class Library:
      ROBOT_LIBRARY_LISTENER = 'SELF'
  
      def start_test(self, data, result):
          ...
  ```
  
  It would also support even more convenient `@library` usage that would automatically make sure listener methods are not registered as keywords:
  ```python
  from robot.api.deco import keyword, library
  
  
  @library(listener='self')
  class Library:
  
      def start_test(self, data, result):
          ...
  
      @keyword
      def example(self):
          ...
  ```
  
  This is trivial to implement and fits well with other listener enhancements #3296 and #4910 done in RF 7.0.
  