introduce mrb_context_run()

currently there are two scnenario to call mrb_run(), the first is
calling a proc, in this case mrb should create a new environment,
discarding all the variables except args, reciever and block.

the second is calling the newly generated irep, like in mirb.
in this case, the variables should be kept after mrb_run().
so we introduce mrb_context_run() to handle this seperately.
refactor mrb_context_run()
mirb: reset stack in the first command
resolved conflicts and updated to latest return value change of mrb_generate_code()