* Add initial support for detailed memory usage report
* Tidy up sizedata target
* Add toolchain to environment paths
* Make sizedata target a bit more readable
* Fixed an issue when configuration file options partly ignored when using custom ``--project-conf`` // Resolve#3034
* Py2 compatible makedirs
* Fix circle dependency
* Fix broken import in test examples
* Fix history
* Remove YAPF markers
* PyLint fix
* Fix invalid project conf path
* Move PIO Core to the root on Windows, issue with long CPPPATHs
* Respect global PLATFORMIO_BUILD_CACHE_DIR env var
* Fix Appveyor paths
* Minor changes
Some boards, like ESP32 based boards, give some unintelligible data when connecting to them via Serial. This is sometimes data that is send with the wrong baud rate (hard baked into the boot loader), or something else. It's hard to prevent this from happening. When a build is uploaded to the ESP board for unit testing, the decoding of the incoming stream should not fail the test due to some garbled content. Since the read data is validated on line 95, any garbage is automatically ignored and only outputted to the console.
On boards like the Arduino Micro, when in bootloader mode it appears ModemManager interferes with the programming process and result in a catastrophic failure with no end of different errors including, but not limited to:
```
error: programmer did not respond to command: write block
error: butterfly programmer uses avr_write_page() but does not provide a cmd() method.
error: programmer did not respond to command: set addr
```
After this, the device could appear to be completely non-functional, refusing to enumerate or appear for programming, but thankfully a double-reset will usually recover it, but the underlying ModemManager issue will still prevent successful programming. Hence the additional rules.
This affects not only PlatformIO, but also the Arduino IDE (on linux).