DNN-6102 Better exception management in event log

This change allows us to provide better analysis services in case of problems in DNN.
- Added table Exceptions that stores message/stacktrace/etc of an exception. It is identified through an MD5 hash. The EventLog optionaly includes the hash as a field to refer to this.
- Added table ExceptionEvents that stores DNN specific exception fields we find in the BasePortalException class such as PortalId, TabId, Filename, etc. It references the EventLog table through the LogEventId.
- A view is added to draw out the totality of the EventLog including the above two tables.
- I've rewired everything from the business layer so the outside doesn't see the difference (for now)