Arcyd: refactor abdweb_arcydcontent

Extract a method out of the duplicated code in the render function.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/status_html_testbed.sh
Arcyd: refactor Shared*DictOuput to new module

Extract the duplicated classes SharedFileDictOutput and
SharedDictOutput to a new module, fixup existing refs to new module.

Use shorter, clearer names for the classes.

When setting up to write the file, use absolute paths so it's robust to
current directory changes.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/loop_test.sh
$ ./testbed/arcyd/status_html_testbed.sh
Arcyd: put log of system exceptions on dashboard

Make it easy to see where Arcyd has run into trouble by keeping a log of
system-level exceptions.

These are exceptions which aren't the result of user error, more the
result of problems in Arcyd's environment or implementation.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/status_html_testbed.sh

$ ./testbed/arcyd/loop_test.sh
- 'raise Exception("Whoops!")' where it will be noticed by the new
   calls to reporter.log_system_exception()