Allow non-native ARM builds

CodeGen.cpp wasn't calling InitializeXXXAsmParser() for any target,
which meant that (e.g.) generating ARM on an x86 host would fail. Code
was restructured a bit to only init AsmParser/AsmPrinter for targets
that actually have them (e.g., NVPTX doesn't have AsmParser).