This code is not intended to be merged in this form.
This is a proof of concept of some class structure changes that
will be useful as a steppingstone for the Client class task.
The old InputBuffer class, which was used for two different
purposes (macro input and buffering between SerialCheckTask
and protocolmainloop()), has now been split into MacroBuffer
and InputBuffer. MacroBuffer inherits from Stream, so it can
be a primary data source, while InputBuffer is a standalone class
with only the exact set of methods needed for the intermediate
buffering job.
MacroBuffer has a write() method that discards the data, so
when it is used as a data source in the “client” sense, writes
to it do nothing.
InputBuffer will go away when the Client class appears, as its
function will be subsumed by an integrated line buffering mechanism.
The Telnet_Server and Serial2Socket classes were converted to
inherit from Stream so they can be used as input sources without
using different code to read them, compared to other sources.