Add support for encoding "!!" records back to FSTD files.

Note: IP1/IP2/IP3 values not yet linked to variable IG1/IG2/IG3.
Refactor encode_vertical to remove one level of nesting.
Fill in IG1/IG2/IG3/IG4 information for '!!' records.

Note: Still need IP1/IP2/IP3 (to link to particular fields).
Move HY data_func creation to C code.