make stdout, stderr, returncode all optional within <failure>

Adding failure-handling to cpychecker revealed a case in which stdout and
returncode weren't meaningful; specifically this was:

http://git.fedorahosted.org/cgit/gcc-python-plugin.git/commit/?h=firehose&id=1fbb678bb121099a8161031aae9e39c75e3faea7

Make all of the fields in <failure> optional, so that different
failure-handlers can write the information that makes sense for them.