doc: add documentation in the README and MLI file
lib,app: support (mutually) recursive definitions

On the way this patch adds the genration of signatures.
test: update `test1` and use recursive types
lib: do some code clean-up