Removed some extraneous dependencies and instead made all the
diagnostics packages be independent packages that happen to share some
concepts/source code.
The common Razor base class code was moved to a shared source file. Then
the Diagnostics page, ELM page, and EF database page all use that. Also
updated the page generator to use the new shared code.
See #257
Mostly just a revert of the commit that removed this functionality, with a few changes:
* Perform proper JavaScript encoding in the script part of the database error page Views/BaseView.cs
* Use the builder pattern in the UseXyz extension methods on IApplicationBuilder (per #184). Also applying this to DatabaseErrorPageOptions to keep things consistent.
* Fixing a few tests that were getting the context from DI but putting it in a using block so that it got disposed (rather than letting DI handle disposing).