Catalog refactoring

Simplified implementation, added "Registration" abstraction to encapsulate
details of looking up factory expressions. Should make things much more
regular going forward.