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.
As discussed on IRC lets keep these exported globals in the executable output (just like we do for functions, no need to export in the relocatable output). Should make the diff smaller too I guess?