Fix swallowing of propagating exceptions

Diagnostics has been wrapping exceptions in UnhandledFubuException. This
makes it difficult to catch certain types of exceptions that are
propagating up the behavior chain. You would have to catch a different
exception (UnhandledFubuException) than the one you intend to catch and
inspect its InnerException when the Diagnostics bottle was included in
your Fubu web app.

This bug fix does away with UnhandledFubuException and instead prefers
an IExceptionObserver service that doesn't wrap the original exception.
The default implementation I provided just utilizes the Data dictionary
found on all Exceptions to mark the exception as observed. If needed, a
different implementation could be provided that instead uses the Cache
collection from FubuCore.Util instead (perhaps utilizing the hash codes
of exception instances).