text: Title: Builtin types should be mapped to the builtins module
  Body: ## Problem
  
  <!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
  
  Currently if a field name shadows a builtin type, e.g. `bool` then pyright will report unbound variables and potentially miss type errors in user code in certain configurations.
  
  ## Suggested solution
  
  <!-- A clear and concise description of what you want to happen. -->
  
  We can reduce the chance of this happening by mapping the types to the builtin module, for example:
  
  ```py
  from builtins import bool as _bool
  
  class Foo:
      bool: _bool
  ```
  