Public headers need the "if __cplusplus, extern C" boilerplate. Otherwise, C++
sources which include the header will look for a name-mangled symbol and fail
at link time.
Closes https://github.com/espressif/esp-idf/pull/6455
Closes IDFGH-4641
* Target components pull in xtensa component directly
* Use CPU HAL where applicable
* Remove unnecessary xtensa headers
* Compilation changes necessary to support non-xtensa gcc types (ie int32_t/uint32_t is no
longer signed/unsigned int).
Changes come from internal branch commit a6723fc
tusb: cdc, tasks encapsulation, callbacks api, multiple interfaces
examples: added serial interface and usb console
ci: reimplemented cmake/make test in python with ignore lists
IDF-578