Refactor definition of `haskell-interactive-mode` by `define-derived-mode`

This simplifies the implementation of `haskell-interactive-mode`
and is the recommended way to define major modes according to the
Emacs Lisp Reference Manual:

    "We recommend using define-derived-mode even if the new mode is
    not an obvious derivative of another mode, as it automatically
    enforces many coding conventions for you."