Additional QoL changes and bug fixes for USB and Ethernet connection:
- `get_usb_controllers()` and `get_ethernet_controllers()` can take a while to run; the values are now stored in the controller class in `controller.usb` and `controller.ethernet` on a function call, which will be checked first when attempting to connect
- UDP connections are no longer blocking for the duration of the program, and are opened as necessary
- The Ethernet port can now be specified on Linux based devices
- TCP timeout is now adjustable
- Error handling is now less OS dependent
- Additional no_check versions of temperature control commands to reduce call delay