Unify meta and global values, use SDoc for all pretty-printing

In the LLVM assembly languages, meta data can appear as values (e.g. get
passed to functions) and values can appear inside meta data. Therefore
we cannot really keep them apart well. Note that we now have an
LlvmMetaUnamed type and a LlvmMetaUnnamed constructor (note the spelling).
This is somewhat unfortunate.

This patch also reworks quite a bit of the pretty-printing code to use
SDoc/Outputable throughout and prefer 'ptext (sLit "bla")' to the less
efficient 'text "bla"'. Note that many get*Name functions become pp*Name
here as a side-effect.

Finally, this patch changes LMGlobal to have a proper constructor, making
getGlobalName, getGlobalVar field accessors. We also introduce support
for global value aliases - unused at this point, but has low overhead.