Be more precise with compiler-libs dependencies.

Specifically As_OCaml needs only compiler-tools.bytecomp. Only the
assemblage binary (tool.ml), needs compiler-tools.toplevel. Thanks to
the inversion of the inversion of control, this allows us to simply
compile assemble.ml files against the assemblage library to native
code.
Make Assemblage's assemble.ml compile itself to native code.

For the fun and as a sanity check.
Assemblage's assemble.ml distinguish examples from tests.

Also adds a test directory.
Better startup procedure.

It is now possible to invoke the assemblage command line tool even if
there is no assemble.ml file in the cwd or access its manual even if
the parsing of assemble.ml fails or if the assemble.ml file doesn't
execute Assemblage.assemble.

We gathered all the command runtime environment handling in the As_env
module and added a -f option to specify the assemble.ml file to use.
As a result of this As_build_env.t becomes really only about the build
environment (it would before mix in things about the assemblage
startup procedure, -I, auto-load).

The command line help is adapted depending on whether we are using
assemblage the tool or directly executing an assemble.ml file
(e.g. the options about auto-load, -I etc. won't appear in the docs in
the latter case).
What cmdline tool is complete without some emoji output ?

Also adds the environment variable ASSEMBLAGE_UTF8_MSGS, somehow
describe should be rewritten to respect that.
Merge pull request #67 from dbuenzli/assemblage-as-a-tool

Assemblage as a tool
Merge pull request #69 from dbuenzli/life-saving-changes

Life saving changes