Run ppx preprocessors before typing and report their errors gracefully

For example:
```
Welcome to utop version 1.12 (using OCaml version 4.02.0+dev5-2014-04-29)!

# [%getenv "USER"];;
- : bytes = "whitequark"
# #require "protobuf";;
# type a = int [@@protobuf];;
type a = int
val a_from_protobuf : Protobuf.Decoder.t -> int = <fun>
val a_to_protobuf : int -> Protobuf.Encoder.t -> unit = <fun>
# type b [@@protobuf]! Characters 5-19:
! Abstract types are not supported
;;
! Error: Error while running external preprocessor
! Command line: ppx_protobuf '/tmp/camlppx7a5b69' '/tmp/camlppxcc8064'
! 
# 
```

As you can see, errors are currently somewhat botched in emacs mode (and in the console they're just overwritten by lambda-term). This is blocked on http://caml.inria.fr/mantis/view.php?id=6399