text: Title: Document how libraries can do cleanup activities if Robot's timeout occurs
  Body: Issue #5376 proposes enhancing the Process library so that if Robot's timeout occurs when a process is waited to end, the process is killed instead of leaving it running on the background. That turned out to be surprisingly simple. Because other libraries may have similar needs, we should document how to do that in the User Guide. In addition to that, we should make sure that the related APIs are good.
  
  When Robot's timeout occurs, `robot.errors.TimeoutError` is raised in the library code. It can basically occur at any point similarly as the standard `KeyboardInterrupt` or `SystemExit`. The simplest way to do cleanup activities if any exception occurs is using `try/finally`. It is really simple and straightforward, and it also has a benefit that the exception is automatically re-raised:
  
  ```python
  def keyword():
      try:
          do_something()
      finally:
          do_cleanup()
  ```
  
  In some cases there may be a need to catch Robot's `TimeoutError` explicitly. That's easy as well, but then the exception should be re-raised explicitly:
  
  ```python
  from robot.errors import TimeoutError
  
  def keyword():
      try:
          do_something()
      except TimeoutError:
          do_cleanup()
          raise
  ```
  
  A problem with the above is that Python also has its own [TimeoutError](https://docs.python.org/3/library/exceptions.html#TimeoutError). This is problematic because `TimeoutError` shadows the standard exception and also because you don't know which exception `except TimeoutError:` refers to when you see just that line. Now that we are planning to make our `TimeoutError` part of the public API, I believe we should rename it to avoid confusion. I think `TimeoutExceeded` would be fine, it's different to `subprocess.TimeoutExpired`, but I'm open for other ideas as well. To avoid backwards compatibility problems, we should preserve the old name as an alias at least until RF 9.
  
  If you wonder why we added `TimeoutError` in the first place when Python also has `TimeoutError`, the reason is that ours was there first. It existed already in RF 2.0, the first open source version, in 2008, but Python got its `TimeoutError` only in Python 3.3 in 2012. 
  
  
  