stage2: refactor errors thrown for size mismatch in mirMovImpl
stage2: refactor errors thrown for size mismatch in mirMovImpl

* introduce `EmitResult` wrapper struct for easier manipulation of
  intermediate emit results - this is mainly to track errors such as
  size mismatch between operands
* create an informative `ErrorMsg` directly at the callsite

andrewrk/zig,andrewrk/zig