Improve configuration (and related errors) management

Currently it's not always easy to distinguish between what must be set on a Journal from what is optional. Also the Journal lifecycle is not enforced and calling read/write before open leads to error that might be hard to diagnose if a library does not own the Journal creation.

I am considering working on a light builder implementation to generate a fully configured Journal.

Would that make sense to integrate that in the main codebase?