* Fix: editing function definition could create a recursive structure resulting in an IDE crash * Fix: CPX Simon game sound not working * Fix: bug in "find" for ByteArrays * Fix: make "say" block handle ByteArrays * Update esptool.exe URL in build script * Force to use of python3 for esptool in linux * Re-enable user preferences for Mac OS (previously disabled to work around a Catalina issue) * Allow ByteArrays to be parsed as numbers (like strings) * Prevent file primitives from reading, writing or listing the ublockscode system file * Print missing primitive name when an unimplemented primitive is encountered * Remove SimLight example for obsolete IOT-Bus board * Replace TempAndHumidity example with TempAndLight (no DHT sensor needed) * Generalize the Dice and DynamicPolygons examples to run on M5Stack as well as ED1 * Merge the 'by board' folders for the M5Stack ED1 * Network primitive improvements: - Fix: Remove httpClient.flush() (flush() discards unsent data, so this could explain Kathy's issue) - Fix: Start the HTTP server the first time it is used and never stop it or it will reject connections - Allow HTTP server to receive binary data (to support sound and image data - Remove unused stopHTTP and httpClose primitives (not needed) - Remove unneeded calls to stopWiFi (now done automatically when you try to connect) - Deprecate startHTTP primitive (now a noop; will be removed later) - Add CORS header to HTTP server responses - Add reporter for HTTP headers - Add support for reading the Content-Length header - Update WiFi libraries accordingly