txopenbci.protocol: move the things that are obviously not-Twisted-dependent into here

so this is not where you find the twisted Protocol implementation, but
rather for framework-agnostic OpenBCI-device-protocol related things.
might as well test that.
subscribe method for eeg and accelerometer data
print traceback on parse errors
ParserProtocol, we might not have abortConnection
fix inconsistent receiver names for sample handler
add a sample consumer that makes sure we're on time
incremental parser is happy with the single-sample rule.

I think when the tests use the parser directly, feeding it a file full
of raw protocol data, the parser needs the whole file described as a
sequence of samples. But the incremental (protocol) parser is okay with
knowing that just the next thing is a sample.

And in fact, trying to treat the streaming protocol data as one long
sequence of samples was running into problems, maybe hitting a buffer
limit.
protocol: put a max length on the general response

so it doesn't accumulate data forever when it's in the wrong mode.

(2048 isn't a documented protocol limit, but general-case responses are
way shorter than that.)
TrampolineParser: allow switching currentRule between packets of data.

This is a change we will submit upstream to parsley.
(needs tests!)