Decouple llvm from vasm::finish

Summary: This uncouples the vasm->x64 final code generation passes from
LLVM generation, which is a necessary step so we can generate
target-specific vasm in CodeGenerator, in cases where its more
convenient than being forced to have a target-specific lowering
pass.

ARM changes will add a finishARM() function and may require more
refactoring, for example we could factor out the target-agnostic
vasm optimizations, like vasm-dead and vasm-jumps.

Reviewed By: @jasone

Differential Revision: D1577810