text: Title: Don't convert arguments based on default value type if there is type hint
  Body: Currently if an argument has a type hint and a default value like `arg: int = None`, we first try conversion based on the type hint and if it fails we also try conversion based on the default value. For example, a keyword with the following argument specification could be called like
  ```
  Keyword    42
  Keyword    None
  ```
  and both usages would work.
  
  This doesn't make much sense, because the type hint not containing the default value type is actually a typing error. For example, the previous example should be `arg: Union[int, None] = None` (or `arg: int|None = None` when using Python 3.10 or newer). This logic is also bit more complicated to explain and also makes the conversion code a bit more complicated.
  
  I believe we should change the conversion logic so that if an argument has a type hint, we do conversion solely based on it, regardless does the argument have a default value or not. If argument doesn't have a type hint, we should do conversion based on the possible default value, though.
  
  In practice this change would mean that a keyword with an argument like `arg: int = None` could be called with an argument that can be converted to an integer like
  ```
  Keyword    42
  ```
  and using
  ```
  Keyword    None
  ```
  fails. This is obviously backwards incompatible, but, as already mentioned, the typing is wrong and should be fixed.
  
  