WIP

cleaning up the `Unit and `Other APIs
Merge branch 'master' of github.com:samoht/assemblage into fixes
The project bootstraps again, all the tests pass

Major refactoring.

The project does not bootstrap yet, but most of the pieces are there. The only missing part is including the .d files in the Makefile.

What's new:
- Fix #54: no more mutation, the graph of components is immutable
- Fix #52: unify compilation units
- Fix #50: generalize `Other
- cleaner interface for custom actions (to generate compilation units, libraries, binaries). With the new API, it's trivial to use an external ocamlbuild project.
- Fix #38: the computation of dependencies has been redesigned. That's not the only dynamic part of the system eg. all the components should be manually declared but the dependency between compilation units is computed automatically. There is now a clear distinction between the contents of a components and its dependencies.
- Fix #24: the link order is always specified manually
- the preprocessors are applied only once per file and the compile ast is later used by the different compilers.
- the compilation rules are now generic enough to be part of as_project. This makes as_makefile very simple and will help to port to other backend later
- more file types, more compilation phases
Fix broken doc
Remove public_doc/private_doc distinction
Reduce the amount of spamming produced when running `make'

Also fix some capitalization with polymorphic variants
Do not generate the .d files when doing a `make clean`

Minor output improvement.

Almost there ...
Bootstrap works, need to fix the examples

\o/
Do not build the test by default
Bootstrap works again!
Documentation generation is broken

Need to fix this
Fix doc generation
Fix dependency computation when generating dependency files
Fix regression in -warn-error enabler/disabler
Remove dead-code
Fix 4.02 support
Add some configuration checks to test if external packages are installed
Final fixed for 4.02
And fix the compilation on <4.02
Fix regression with doc generation