Change floats to doubles, named as reals.
Major overhaul of interpreter.

Several changes to the structure have been introduced:

    * The Interpretation monad is now layered on top of IO, so we can
      use IORefs to implement indirections. This was unavoidable, we
      were going to have to interact with files, stdin and stdout
      anyway.
    * The changes to floats/reals have been pushed through.
    * Errors have been refined to RunTime Type/Interpretation errors, of
      which the vast majority are errors the typechecker would have
      picked up anyway.