Delete / Unallocate RMT Driver on ESP32
The current RMT functionality in Micropython for the ESP32 appears to have no method to uninstall an RMT driver. This makes it challenging to re-configure RMT on the fly or reuse those resources. Calls to del() of an RMT object to not appear to uninstall the driver either. Recommend creating a RMT.del() function to implement the Espressif rmt_del_channel() function to free the resources
Update esp32.RMT module to the new API
Summary
The current esp32.RMT module uses a legacy API from ESP-IDF 4.x. The ESP-IDF 5.x offers a new API, which is overall better, and easier to implement the RX side in the future. This PR updates the module and the documentation, preserving the current MicroPython RMT API as much as possible.
The bitstream RMT implementation was updated as well, since ESP-IDF does not allow an image to reference legacy and new APIs at the same time (it resets right after boot with an error message, even if neither module is imported).
Testing
Tested on ESP32, ESP32-S3, ESP32-C3 and ESP32-C6. (Commenters may have tested on other variants.) We have tested all aspects of the RMT API and all seem to work fine.