Improve O(n^2) implementation to O(n) about NOP removal

The current implementation of NOP removal in Optimizer/block_pass.c is very slow, especially there is a lot of NOPs in a code block. For instance, it took 59 seconds on my environment for removing 30000 NOPs which is produced by optimizing 30000 `$a++;`.

My patch is for reducing the amount of memory copy. Using new implementation, it took 0.33 seconds for the same experiment.