results-add: function to add two results lists

Helps to hide the implementation detail of what a result is (currently a
list of 3 integers).
Minor refactor
run-test-safely: run a test safely

... and also try to guarantee that its teardowns will always be run
whether the test throws an error or not. However, this is not handling
errors in the setups or in the teardowns themselves.

If you want to be sure that any and all errors are being handled, right
now the way to do that is to put all your setup and teardown code inside
each test.

An error is, for the purposes of tallying, treated as a test failure.
assert-*: add and beef up assertion functions

Ggspec now has a respectable suite (pardon the pun) of assertion
functions.