Previously, we added them during a constraint optimization pass as
a part of the AST traversal. This is not ideal for many reasons.
First, we only want to include the definitons once,
but the AST traversal opens an opportunity to accidentally include them
more than once (e.g. if we happen to have a rcmds as a subnode of another node).
Second, it meant that we needed the pdef? parameter so that
on alternative constraints, the prime definitions are omitted.
The refactoring simply put the definition inclusion at the top-level,
simplifying the optimization pass.