text: Title: The take argument should affect the return type
  Body: For example, the following will not raise an index error in mypy
  ```py
  user = await client.user.find_unique(where={'id': 1}, include={'posts': {'take': 1}})
  assert user is not None
  post = user.posts[2]
  ```
  
  One solution would be to modify the return type to a Tuple of the same length as the take argument, not sure how I feel about doing this as I do not want the runtime types to differ that much from the static types but I also don't want to have to convert all lists that we return to tuples at runtime either.
  
  There might be some hacky way for overriding the getitem check mypy does.