Switching to NoImplicitPrelude everywhere

As a part of this some additional changes were made:

* Using CPP macro KIND_POLYMORPHIC_TYPEABLE to decide if Typeable
  instance for Throws should be derived.
* Using explicit import lists to better track dependency changes in the
  future.
* Extending `-fpedantic' with `-fwarn-implicit-prelude' and
  `-fwarn-missing-import-lists'.