Cleaner interface for toplevels and binaries

They can use any kind of dependencies (ie. lonely compilation units, syntax extension, local library or ocamlfind packages)