Refactor coverage

Highlights:

- Moved the majority of coverage functionality into AbstractCoverage.  This centralizes the core functionality of the coverage and allows Simplex, Complex, and View coverages to share as much functionality as possible.
- Initial implementations of View and Complex coverages