echo -h
In addition to fixing `echo -h` this includes some debugging related cleanups I made while investigating the issue. Fixes #4120
Running the tests on travis revealed that some compilers (or at least with some options) call the wrong struct constructor if there is more than one struct with the same name but differing definitions.