Allow LLVM to optimize GC write barriers for new objects (#36992)
Make alignment of tag more obvious for LLVM and
add a few optimization passes after GC lowering to let LLVM
delete some write barriers.
This fixes a regression from LLVM < 5 where the pass ordering makes this
happen automatically.