Implement nrepl-mode as a derived mode.

These days it's idiomatic to implement major modes
in terms of the `define-derived-mode` macro. It simplifies
the definition by using convention over configuration and
gives you the ability to reuse code from parent modes.
This particular change should transparent for our users.