This adds a '--no-implicit-module' option, which disables the insertion
of a top-level 'builtin.module' during parsing.
The translation APIs are also updated to take/return 'Operation*'
instead of 'ModuleOp', to allow other operation types to be used. To
simplify translations which are restricted to specific operation types,
'TranslateFromMLIRRegistration' has an overload which performs the
necessary cast and error checking.
I think if would be more friendly if we could register these with a type safe trampoline. Something that automatically dyn_cast the operation* to the Op expected by the call back and print an error message and fails before calling the translation call back in case of mismatch.