Fixed the error by reducing the maximum size of an integer to be 31 bytes (248 bits). I.e. the LSB only encode text length (when the text bit is set) and boolean variable. Updated tests.
Cleaned up the decoding of the variable header and broken it out in a nested class ZmqSigOpSerDes::VariableHeaderDecoder so that the decoding is not repeated in several places and thus increase the risk for messing up.
Also added a method to ZmqSigOpSerDes for generating crtitical PSM messages when trying to decode a variable to the wrong typ, e.g. boolean -> integer or negative int -> unsigned int.