bit more peephole optimization for NODE_LVAR
The correct is to compare the MRB_STACK_GROWTH.
area of implicit nil is not enough to nregs
Define eval as module function.
Class.constants to take optional argument; close #2133
Merge pull request #2135 from mirichi/bug-fix

correct to compare MRB_STACK_GROWTH.
Merge pull request #2137 from take-cheeze/module_function_eval

Define eval as module function.
mark may be missed when eval() is called
forgot to remove abort()
re-apply 3644f1b since we have fixed GC bug
add Hash#fetch; close #2134
Merge pull request #2136 from mirichi/bug-fix2

area of implicit nil is not enough to nregs
NODE_DEF should preserve stack region for lambda; ref #2136
NODE_SUPER should preserve stack region for block; ref #2136
Implement Struct#to_a and Struct#values .
Add Array#select_bang
Fix MSVC warnings for numeric.c
rename `mrb_str_buf_append` to `mrb_str_cat_str`

The new name is better and less confusing, because:
  - `mrb_str_append` calls `mrb_str_to_str` and this function doesn't
  - `mrb_str_buf_append` _is_ `mrb_str_cat` for `mrb_value` strings
Merge pull request #2138 from take-cheeze/struct_to_a

Implement Struct#to_a and Struct#values .
Merge pull request #2139 from suzukaze/add-array.select_bang

Add Array#select_bang