./testbed/arcyd/exercise_arcyd.sh: fix trap

Instead of trapping 'ERR', which doesn't seem to work when errors occur
inside of functions, trap 'EXIT' instead.

Set '-e' to get bash to automatically exit if anything returns non-zero.

Test Plan: $ ./precommit.sh
Arcyd: add 'arcyd-status-html' command

Add a new command for rendering a dashboard page for the running Arcyd
instance.

Move the existing 'status-html' command to 'repo-status-html'.

Introduce a new 'arcydreporter' for capturing the relevant state of the
running instance.  In later work we can move everything from stdout and
stderr into this mechinism, it should probably capture standard logging
too.

Extend devstatushtml to cover the new command and exercise the
'arcyd-status-html' command in the system tests.

Test Plan: $ ./precommit.sh
Rename system_tests.h -> smoke_tests.sh

Before adding more comprehensive 'acceptance tests', rename the existing
system-level tests to 'smoke tests' as they are supposed to be quick
tests of the most critical functionality.

Test Plan: $ ./precommit.sh
testbed/arcyd/savemail: fix output

Don't overwrite all the saved mails with a blank line at the end
of savemail.

Use 'cat -' instead of 'read' so that we capture all of stdin.

Test Plan: ./testbed/arcyd/exercise_arcyd.sh
WIP: Add testbed/arcyd/acceptance_tests

A more comprehensive suite of tests with the focus on coverage rather
than minimising running time.

Test Plan: $ ./testbed/arcyd/acceptance_tests.sh