This WasmSymbol types comes directly from the input objects
but we want to be able to represent synthetic symbols too.
This is more in line with how the ELF linker represents symbols.
This change also removes the logic from Symbol::getVirtualAddress
for finding the global address and instead has the InputFile
provide this.
It felt that the function signature is a bit too flexible (for example, you could pass Kind::UndefinedFunctionKind to createDefined function), but since these functions are private functions, that's perhaps okay.