merge patch by Stefan Monnier from PR#5884

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13253 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#5686: Add testcase.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13255 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#4592: Add test case.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13256 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Fix #4887 (input_char after close_in crashes ocaml, msvc runtime). Patch by Christoph Bauer.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13257 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Allow to pass mapper objects with more methods.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13258 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Use absolute paths in ocamlbuild_test.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13259 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#5652: Add support for camlp4 native plugin.

Patch by Hongbo Zhang!

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13260 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
ocamlbuild_test: Make root directory of tests before running them.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13261 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Implement -syntax ocamlfind flag for ocamlbuild

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13262 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Add test for new ocamlbuild -syntax option

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13263 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Typo.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13264 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
fix a benign typo in the parser, spotted by Frédéric Bour


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13265 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Preparing for specialisation patches 1

 * Lambda.Lfunction type : use a record instead of a tupple for
   easier extension
Preparing for specialisation patches 2

 * Clambda.Udirect_apply type : add the full function_description
   instead of only the label.
Propagate simple type informations about parameters and return value to lambda code
Propagate type information to clambda
Use type information in cmm

 * When a function can be specialised, it is compiled 2 times:
   one time normally, and one time with float parameters and
   returns unboxed. The specialised function has a label
   suffixed by "_direct"
Allow more unboxing (variables, ifthenelse, boxed int constants)