ocamlbuild: use ocamlfind to discover camlp4 path

Fixes [issue 6605](http://caml.inria.fr/mantis/view.php?id=6605).

The idea is to use `ocamlfind` to discover where camlp4 is actually installed. And so even if the `-use-ocamlfind` option is not given, for compatibility reasons.

In case the call to `ocamlfind` fails, the default value of `+camlp4` is used. So a working install of camlp4 without ocamlfind is still possible.

The query to `ocamlfind` is done lazily, only when a rule requires camlp4.
Why use `Lazy.from_fun` instead of simply the following?
```
  lazy Findlib.(
    try (query "camlp4").location
    with Findlib_error _ -> "+camlp4"
  )
```