* add support for KSZ8001, KSZ8021, KSZ8031, KSZ8051 and KSZ8061
* remove duplicate code
* simplify architecture to make the code base extensible (for future work)
Ethernet driver events properly bounded with ESP NETIF actions to support multiple Ethernet modules used at a time.
Components using Ethernet updated to conform with new API.
Closes https://github.com/espressif/esp-idf/issues/7318
Resolved possible race conditions when accessing registers in different banks.
Added Tx ready semaphore when requesting packet to transmit (ENC is slow => access to it needs to be controlled).
Added setting of CS hold time based on Data sheet.
Added option to set the ENC28J60 to Full Duplex mode.
Addressed several ENC28J60 Erratas.
Restructured ENC28J60 example folder structure so the driver could be easily linked from different projects.
Extended the README to guide users of how to properly use the ENC28J60 chip.
Extended iperf example to include ENC28J60.
Closes https://github.com/espressif/esp-idf/issues/4747
Closes https://github.com/espressif/esp-idf/issues/7117
Closes https://github.com/espressif/esp-idf/issues/7156
esp_netif_init() returns standard esp_err_t error code (unlike tcpip_adapter init), so shall be checked for the return value
Also to make the initialization code more consistent.
1. Add command for Ethernet based on console component.
2. Make cmd_system and iperf a component that can be referenced by other examples
3. Add "version" command to cmd_system.c
4. Clean up the README.md in all ethernet examples[TW#26525]