Fixes#427
Adds a basic I2S class based off of the Arduino-SAMD core. The raw
i2s_xxx functions are still a better way to use I2S due to their
flexibility, but this will allow basic Arduino sketches to work.
Add basic 24 bit mode to the I2S API with a i2s_set_bits() call.
By default 16b mode is still used, but if i2s_set_bits(24) is run
before i2s_begin() then the HW will drive 24-bits of data. This
data must be left-aligned (i.e. bits 31..8) in 4-byte samples.
Fixes#5244 (the HW doesn't support 8 or 32 bits, only 16 or 24).
Two parameters are added to allow using only i2s-in/out-data pin.
This is necessary when i2so-bck and i2so-ws are repurposed
especially because they overlap with SPI GPIO.
Fixes#6066
Preserve any existing sample rate for the I2S unit when performing an
`i2s_begin`. If nothing has ever been set, default to 44.1KHz as
before.