an error message is mandatory

(otherwise, Errbit chokes)
logging with an exception wasn’t recording properly
include the classname in the error message

* Errbit requires a message; an error class is not enough
* “NullPointerException” is more useful than a hard-coded “(message not available)”, even if it is duplicated in the error-class field
redefine the meaning of report.getRootException()

Before, this returned the head of the full exception chain, whose tail was the root cause.
Now, this just returns the root cause.

The main motivation is that Errbit really does not handle well exception chains.  The web page UI handles it ok, but the email updates it sends attempts to condense the backtrace, and the chaining makes it non-sensical.

The full exception chain will be recorded in the ‘ALL THROWN EXCEPTIONS’ environment/cgi variable.
normalize reflection stack frames
add parentheses and a newline

(for better readability)
use correct Level class
expand/fix comment
Merge pull request #3 from CruGlobal/refinements

Refinements