Add catalog concept.

Massive branch change. I will stash all the changes in a future
in a single branch explaining the 'catalog' concept and all the
changes.

I shall also modify README