data logging and saving

setup_plexon takes a pointer to a data variable and returns a
function that logs data to it. This function can be passed to the
controller for marking events, but the controller doesn't need
to know anything about the low-level TTL details or the data structure.

Data saving is handled by the task itself.