text: Title: Support type aliases in formats `'list[int]'` and `'int | float'` in argument conversion
  Body: Our argument conversion typically uses actual types like `int`, `list[int]` and `int | float`, but we also support type aliases as strings like `'int'` or `'integer'`. The motivation for type aliases is to support types returned, for example, by dynamic libraries wrapping code using other languages. Such libraries can simply return type names as strings instead of mapping them to actual Python types.
  
  There are two limitations with type aliases, though:
  - It isn't possible to represent types with nested types like `'list[int]'`. Aliases always map to a single concrete type, not to nested types.
  - Unions cannot be represented using "Python syntax" like `'int | float'`. It is possible to use a tuple like `('int', 'float')`, though, so this is mainly an inconvenience.
  
  Implementing this enhancement requires two things:
  - Support for parsing strings like `'list[int]'` and `'int | float'`. Results could be newish [TypeInfo](https://github.com/robotframework/robotframework/blob/6e6f3a595d800ff43e792c4a7c582e7bf6abc131/src/robot/running/arguments/argumentspec.py#L183) objects that were added to make Libdoc handle nested types properly (#4538). Probably we could add a new `TypeInfo.from_string` class method.
  - Enhance type conversion to work with `TypeInfo`. Currently these objects are only used by Libdoc.
  
  In addition to helping with libraries wrapping non-Python code, this enhancement would allow us to create argument converters based on Libdoc spec files. That would probably be useful for external tools such as editor plugins.