Closes #32.

Revamped System.REPL.Asker. They don't take two error messages any more,
but two functions that Either an error or success. The interface was
mainted through the smart constructors `asker`, `typeAsker`, and
`predAsker`.

Also:

* Add `maybeAsker`.
* Added `ParamNumFailure`-case to `AskFailure`.
* Added error type variable to `AskFailure`. Everything else in the
module was adjusted accordingly and thus, all the functions now work
with custom error types.
* Functions created through `makeCommand` now return as their Left case
an `AskFailure` instead of `()`. `commandDispatch` still swallows the
`Left` case into an `()`.
* Put guff from System.REPL into System.REPL.Command.Helper.
Changed type of System.REPL.commandDispatch.

Added a fourth case to AskerFailure (NothingFoundFailure).

This one is returned when commandDispatch can't match any command to a
given input.
Put command part of System.REPL into its own submodule.