FirmConstructor: Evaluate exprResultToValue calls first

* Fixes ReturnStatement generation (run/BooleanExpr.mj; getCurrentMem was called in a different block than newReturn).
* Optimizes Assignment and NewArray generation (potentially reduces unnecessary phis)