Functional changes:
- Dropped support for Python 3.8
- Added detect command for detecting connected CircuitPython boards (both CIRCUITPY and bootloader mode)
- Added optional timeout argument to install and update commands
- Improved error messages when things go wrong when downloading UF2s
- Updated requirements (both required and development)
Development changes:
- Fixed minor issues in Makefile commands
- Fixed CI issue where Windows tests were not fully cleaned up