Split message and stack into two separate variables

This refactoring is to first step towards supporting error.htmlMessage.
We restructured the code to have a variable for the error message and
the error stack. This will allow us to use error.htmlMessage instead of
error.message as the message displayed to the user. The next commit will
take advantage of this separation.
Handling of error.htmlMessage in the HTML reporter

If an error has a htmlMessage property it will be inserted verbatim into
the DOM. That gives assertion libraries complete control over the
formatting of the error message shown by the HTML test runner.