Support multiline eval.

For that to work we wrap the code we get in `:{ ... :}` and pass that to `ghci`. If the code we got is a function binding we also wrap it in a `let` statement.

Should work at least on our codebase, haven't tried with anything bigger.

Before we merge this I'd like to add some tests and hear from others that it works for them (hopefully on slightly more complex projects).