Do not use printf() to emit output

- Raises errors if `%` symbols are present, as those are used to denote
 replacements... which MUST then be present as arguments. Do a straight
 `echo` instead.
- Required refactoring the test assets to:
 - remove `printf` overriding.
 - aggregate only headers; renamed `Output` to `HeaderStack`, and provided
   methods for pushing on to the stack, retrieving from it, and resetting it.
 - updating the tests to use `expectOutputString()` and to refer to
   `HeaderStack::stack()` when testing against headers.

Fixes an issue observed when some HTML being emitted included "100%" in an 
attribute.