text: Title: Expand List input types
  Body: ## Problem
  
  <!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
  
  Our query input types use `List` (e.g. `{'string': {'not_in': ['a', 'b']}}`), this severely limits the types that users can pass to these methods. We should aim to be as broad as possible.
  
  ## Suggested solution
  
  <!-- A clear and concise description of what you want to happen. -->
  
  We could switch these types to support taking `Iterable` however this could cause some false positives as `str` is `Iterable` this means that the following would now be statically accepted for string fields:
  
  ```py
  {
      'not_in': 'a',
  }
  ```
  
  This would cause an error at runtime.
  
  I do not know how solvable this is by us until a PEP is drafted for a `Not` type.