WIP: Generate .o file directly rather than going through LLC

This is the first part of #5459. This patch removes the dependency on llc. There the remaining question of what to do for the linker. On Linux/OS X we can probably just call out to the system linker (can we reasonably expect a linker to be present during install on those system?), which on windows definitely won't be possible, since that would require either MCJIT or Visual Studio. The other two options are shipping lld or switching to MCJIT and use MCJIT RuntimeDyld to load the raw object file into memory. That last solution isn't great, because we'll have to write the object file with the large code model, but it's probably the best we can do without a system linker.