text: Title: Drop Python 3.7 support
  Body: Python 3.7 is now end of life - https://devguide.python.org/versions/#unsupported-versions
  
  We should do the following:
  
  - [x] Update release.yaml to use a more modern Python version https://github.com/piccolo-orm/piccolo/blob/36e80f58b87822244e405736be141e68b5ae7fa4/.github/workflows/release.yaml#L17
  - [x] Update our [CI scripts](https://github.com/piccolo-orm/piccolo/blob/master/.github/workflows/tests.yaml)
    - [x] Remove 3.7 from `python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]`
    - [x] Update `if: matrix.python-version == '3.7'` to `if: matrix.python-version == '3.11'`.
  - [x] Update `setup.py`
    - [x] `python_requires=">=3.7.0"` -> `python_requires=">=3.8.0"` https://github.com/piccolo-orm/piccolo/blob/36e80f58b87822244e405736be141e68b5ae7fa4/setup.py#L61
    - [x] And drop this line: https://github.com/piccolo-orm/piccolo/blob/36e80f58b87822244e405736be141e68b5ae7fa4/setup.py#L87
  - [x] Wherever we use `from typing_extensions import Literal` or `from typing_extensions import Protocol` we can now import them directly from the `typing` module instead. `typing_extensions` can then be moved from `requirements.txt` to `test-requirements.txt`.
  
  The reason for dropping older versions is it makes our CI run faster, and we can adopt newer Python features without having to worry about backwards compatibility.