Merge #239

239: examples-features: Add a featured CTAP example r=jrvanwhy a=alistair23

This PR adds a fully featured CTAP example.

In order to do this we use a few external crates:
 * ctap2-authenticator: This handles CBOR decoding (using serde_cbor) and  parses the CTAP data
 * p256, subtle and generic-array: Are used for Elliptic Curve crypto

A few remaining issues:
 * ~~Platforms without atomics don't work. ~~There are patches sent to the upstream projects, we just need them to update and then the crates we use to update.~~ Just waiting on the next release (0.4.11+) of https://github.com/rust-lang/log/releases~~
 * ~~One change for ctap2-authenticator is required, I'll send a patch soon.~~
 * The nonce is static. This is not cryptographically sound. This needs to be updated to use Tocks TRNG HIL
 * Some functionality is still unimplemented
 * ~~`self.hmac.init_driver().unwrap` doesn't work in a callback without implementing debug. I get this error otherwise: method not found in `core::result::Result<libtock::hmac::HmacDriver<'_>, libtock::result::TockError>`. Any ideas?~~
 * Security audit, eventually

This PR adds functionality to:
 * Handle information requests from the host
 * Generate keys when requested from the host
 * Sign and attest data sent from the host
This was all tested with the Yubico Python FIDO library. It will also tested and can be used to register and login to websites using FIDO2.

Co-authored-by: Alistair Francis <alistair.francis@wdc.com>