Fix-up the boot file, to match the declaratoins in the module.
Split-out the type of TcSMonad into a separate module TcSTypes.

We do this, because we'd like to mention the type `TcS` in `TcRnTypes`.
The reason for this is that type-checker plugins are stored in the
global environment of `TcM`, which is defined in `TcRnTypes`.

If `TcRnTypes` depends on the whole of `TcSMonad`, then we have
to add very many dependencies to `gc.mk` (see note about building DLLs
on Windows).

For this reason, we split-up TcSMonad in twp parts: `TcSTypes`, which
has relatively few dependencies, and `TcSMonad`, which contains most
of the code.

`TcSMonad` was getting quite large anyway, so hopefully this is OK.
Change type of type-checker plugins to give access to type-checking monads.