Readstring fix & testing cleanup

    Rewrite read string and cleanup testing
    
    Now readstring has the following better properties:
     - fewer string copies
     - simpler
     - works correctly reading to the end of stdin
     - respects binary/text mode setting on the channel
    
    In order to do that, I needed to make some minor modifications
    to QIO to support reading until the end of the file as
    a style setting for binary and text string reading
    (qio_channel_read_string is the binary version and
     qio_channel_scan_string is the text version).

As a bonus, this pull request also includes removing
three custom sub_tests:
 -  the C language IO tests to use .test.c
 - the UTF8 test uses EXECENV to ensure a UTF-8 locale
 - a getenv test now uses .execenv to set the enviro var
and adds tests for readstring and fixes the usage for compileline.

Tested with 'make check', C language I/O tests, new read string tests,
and the two regexpdna tests (these are the only ones that called
readstring previously),

@benharsh said he would review and test on 32-bit
Is this variable used anywhere? I only ever see that it's set, here and again at line 384.