Implement pragma handling

@danedaworld and I implemented `{-# LANGUAGE ... #-}` pragma handling.

Somebody more experienced than us should probably look at how we handle extensions that are not found in [Parser.hs](https://github.com/razzius/IHaskell/blob/allow_pragmas/src/IHaskell/Eval/Parser.hs).

Before:


![screen shot 2014-12-04 at 4 46 30 pm](https://cloud.githubusercontent.com/assets/2244895/5448278/b11e59e4-84aa-11e4-87d5-a00da453ef09.png)

After:

![screen shot 2014-12-15 at 9 56 57 pm](https://cloud.githubusercontent.com/assets/2244895/5448262/5ff23fea-84aa-11e4-99ae-7ccf7562c70e.png)

Closes #309.
Is this complexity necessary? Namely, is there a reason that this short-circuiting behaviour is better than something like

```haskell
setAll :: [String] -> m (Maybe String)
setAll exts = do
  errs <- mapM setExtension exts
  return $ msum errs
```
or something along those lines (e.g. run all extensions, find the first `Just`). 

That makes the logic a bit simpler, but perhaps the original is necessary? I am not sure. What are your thoughts?