WebAssembly object files will now have an explicit symbol table. This commit is the second of two halves, adding the actual symbol table itself.
The main changes are adding first-class support for Globals throughout the code as a third type of symbol, alongside existing Function/Data symbols, and Data symbols now no longer use Wasm globals in the intermediate format.
The end result is a bit more boilerplate, but a surprisingly nice reduction of complexity in the core logic, which becomes quite pleasingly neater.
Must be committed simultaneously with D42495, which adds symbol-table support to Clang/LLC.