Fix ArrayOutOfBoundsException when constructing TcpHeader

If the TCP options are invalid and cross over the end of the TCP header, then the paddingLength is negative and then things go bad very quickly. This change adds a check for this case, and throws a more reasonable exception (IllegalRawDataException)