Clean-up in the container handling

Completely suppressing the mutable fields is not possible without having to do some convoluted changes. So I've removed any external facing function modifying the state, and I've added some hard error if the state are manipulated wrongly by the different internal combinators.

It's related to #54
Add Daniel in the author list
Be more explicit about generated compilation units

Fix #51
Rename `Dir to `Files to avoid confusion with source directories

Related to #51
Support pure mli modules

Fix #35
Add missing test file
Fix ocamldoc refs
Add a test to put a compilation unit in multiple containers
Remove duplicates in ocamldep outputs

(this could happen if both a ml and a mli were depending on the same modules)
Allow a compilation unit to belong to multiple containers (libs and bins)

There are still (limiter) mutation, as having a bi-directional link between containers and their contents is quite useful in practive. I'm not sure we can really get rid of the it completely.
More complete multiple container example
Merge pull request #57 from samoht/fixes

Fixes
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/