Made a general purpose DeviceStream class template

Send it a Device, which must provide a read, write, flush and
bytesAvailable function and you can do C++ streaming operations.
Works with characters, strings (in ram and flash) and integers
(signed and unsigned)