Use non-intrusive refcounting for LangOptions

This type is only refcounted in a couple of places so making ownership explicit
improves clarity.
Use non-intrusive refcounting for TargetOptions