rt-history: An RT-safe history log with error checking

On crates.io On docs.rs Continuous Integration Requires rustc 1.60+

This is a bounded wait-free thread synchronization primitive which allows you to record the time evolution of some data on one thread and be able to query the last N data points on other threads.

By definition of wait-free synchronization, the producer and consumer threads cannot wait for each other, so in bad conditions (too small a buffer size, too low a thread's priority, too loaded a system...), two race conditions can occur:

```rust let (mut input, output) = RTHistory::::new(8).split();

let inbuf = [1, 2, 3]; input.write(&inbuf[..]);

let mut outbuf = [0; 3]; asserteq!(output.read(&mut outbuf[..]), Ok(3)); asserteq!(inbuf, outbuf); ```