Revise Compiler API.

A step closer to a proposed API.

Remove unused Reporter params
Low-level is not really correct. This is very high abstraction level.