Fix Req_BodyReadChunk/Resp_BodyReadChunk

The macro increments the 'p' pointer by the number of bytes it's going
to read. However the 'p' pointer is incremented in __FSM_MOVE_n() macro,
and in result we increment it twice. The pointer has to be incremented
though when we've fully read the required amount of data and completed
processing, as in that case we don't call the __FSM_MOVE_n() macro.
The solution: move the 'p' pointer increment to where it belongs.
Fix __parse_transfer_encoding() to return correct offset of the next header.

This is another case of being off by one. The offset returned by
the function was pointing at the last character of the current header.
Fix tfw_str_add_compound()

In case of a TFW_STR_COMPOUND string we reallocate memory to add space
for an extra TfwStr. However the root TfwStr was still pointing at the
original memory block which leads to memory corruption. Fix that.
Fix __parse_hex()

The condition in the for() statement should be for continuation of
the loop run. The point here is that a whitespace and a semicolon
are separators, and we should continue until we see one of them.