This adds a `--no-implicit-module` option, which disables the insertion of a top-level `builtin.module` during parsing. The top-level op is required to have the `SymbolTable` trait. The majority of the change here is removing `ModuleOp` from interfaces. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D134238