Check tags for promoting move instructions.
Fix issues with interleaving of in-order traversals.

There's an assumption in later transformations that the syntax of
every instruction is valid, but because of the way the in-order
traversals interleave not every instruction will have been syntax
checked by the time we're checking tags (for example).  This is
because the syntax check needs to traverse the entire AST, whereas the
tag checking will parse basic blocks and check tags in basic blocks
when it visits the defasm node—before visiting child nodes.

At the very least the syntax check and the symbol format check should
be fully complete before moving on to other phases, but for now I
think the guarantee that each phase has completed before the next
begins is worth enforcing.  This can change later if necessary.