Add recorder id (internal value) to the Item package

The internal recorder it must be sent with each package to keep the
implementation from coming overly to complex. It is faster to just send
all items in bulk instead of keeping track of a queue for each recorder.
Remove payload frame and send payload enum type directly

Since the recorder id is in each item package there is no need for
sending it in the payload frame also. Thus that struct only contains a
single value and can be removed.

(If a compound data type is needed in the future, refactor again).
Move thread from lambda to pure function

When using lambda expr for thread input in for-loop the loop integer
seemed to be randomly initialized in the lambda, i.e. some sort of race
condition.
Add NOTSETUP value to enum to capture non-setup recording parameters

Hard to use any other solution, the default constructor must be
"invalid" and the setup command must transition the recording parameter
state yet further.
fixup! Add NOTSETUP value to enum to capture non-setup recording parameters
Add methods for fetching type and length of recording parameter

For storage reasons the type and length, since small in value range, had
to be cramped into a single char, there should be methods for packing
and unpacking the data. Masking and bit-shifting should be kept strictly
internal. (Struct member is not private though, it is still a struct).
Use std::array instead of std::vector tracking recorders

For some reason the std::array is ~25% faster than std::vector, the
look-up is a simple index one but still std::array is faster.
Add print function for data items (debugging only)