fix protocol decoding so it works with Bluetooth.

This time for real. When using Bluetooth as transport sometimes we do
not get a full frame, so that flush() ended up choping part of an
otherwise perfectly good frame.

Also, instead of blindly discarding everything in between we really wait
until having a complete frame to decode.
Light up everyting when starting.

Looks nice here.