feat: first pass at reconnection
feat: first pass at reconnection

Remove `write_all` - the `TcpStream.write_all` blocks until all the
bytes are written.

Add a `needs_reconnection` flag. We can't override `self.output` on the
same tick, so do it when the next metric is about to be send.

Change `Emitter.output` to `Result<TcpStream, Error>` instead of
`Option<TcpStream>`. This streamlines the manipulation of this variable
a little.

numbat-metrics/rust-emitter