[MLIR] Extend Symbol verification to reject public symbol declarations.
- Extend the Symbol interface with isDeclaration to identify operations that declare a symbol as opposed to define it.
- Extend verification to disallow public declarations as per the discussion in https://llvm.discourse.group/t/rfc-symbol-definition-declaration-x-visibility-checks/2140
- Adopt the new interface for FuncOp and fix test and code to not have/create public function declarations.
Differential Revision: https://reviews.llvm.org/D91456