Removing unnecessary use of lock/`Option` for IR data structures
This issue tracks unnecessary uses of locks in Zebu. The old Mu spec requires mutation on the IR, for example, creating a IR node, then adding a name to it. Thus either locks or
Option<T> are introduced to allow mutation. The new spec makes the IR almost (if not completely) immutable. It is possible to remove most of the locks.
Some rewrite compilation passes try to mutate on IR nodes as well. However, we can always copy and update instead of mutating.
Most of the