Restructure weberver tests.

Separate output tests into a separate file to keem things manageable as
more tests are added.

Also rename files to match package name.
Refactor how json responses are parsed in tests.

Use a map[string]interface{} type instead of a custom struct for each
type.  This saves having lots of duplicated types in the tests.

This refactoring also picked up an error in the JSON output - the
tagging on the fields of the struct wasn't correct, so the fields in the
generated JSON were CamelCased.  The tests weren't picking this up
because they had the same problem.
Add virtual output implementation.

This implements the Output interface, and simply maintains state in an
internal variable.  It doesn't interact with any actualy output system
in any way.  This is useful in tests, and could be used in a polling-type
output implementation.
Switch timer tests to use virtual output.

This is simpler and less brittle than using the mock approach
Refactor most webserver tests to use virtual output.
Merge remote-tracking branch 'origin/virtual_output'