Fix crash if #inspect does not return a string value
eval() should preserve stack in env properly; fix #2671
Add String#prepend
Merge pull request #2674 from suzukaze/string.prepend

Add String#prepend
mrb_str_new(mrb, "", len) creates an unmodifiable string object; ref #2674
avoid out-of-bounds access of irep->lv; ref #2671, fix #2675

allocation size of irep->iv is irep->nlocals-1.
mruby-eval: proc from env may be NULL; close #2676
String#[] should reject nil index
try to convert not only nil but every objects to fixnums; ref #2677
Merge branch 'h2so5-string-nil-index'
String#[]: float handling merged to #2677
block_given? should return false on top-level; ref #2678
block_given? should return correct value when called in blocks; close #2678

avoid a loop to find parent's callinfo using mrb->c->cibase[env->cioff]
now retrieves number of arguments of blocks from OP_ENTER op code; close #2671
mrdb: fix that break command cannot handle Windows paths

Before fix:
```
$ mrdb c:\tmp\b.rb
(c:\tmp\b.rb:1) break c:\tmp\b.rb:3
Class name 'c' is invalid.
```

After fix:
```
$ mrdb c:\tmp\b.rb
(c:\tmp\b.rb:1) break c:\tmp\b.rb:3
Breakpoint 1: file c:\tmp\b.rb, line 3.
```
Merge pull request #2681 from sdottaka/mrdb-break-windows

mrdb: fix that break command cannot handle Windows paths
Fix splat and multiple assignments

Case1: From variable

Code:

    a = [1, 2, 3, 4, 5]
    b, c, *d = a

    p [a, b, c, d]

Before:

    [[1, 2, 3, 4, 5], 1, 2, []]

After:

    [[1, 2, 3, 4, 5], 1, 2, [3, 4, 5]]

Ruby:

    [[1, 2, 3, 4, 5], 1, 2, [3, 4, 5]]

Case2: From variables

Code:

    a = [1, 2, 3]
    b = [4, 5, 6, 7]
    c, d, *e, f, g = *a, *b

    p [a, b, c, d, e, f, g]

Before:

    [[1, 2, 3], [4, 5, 6, 7], 1, 2, [], 6, 7]

After:

    [[1, 2, 3], [4, 5, 6, 7], 1, 2, [3, 4, 5], 6, 7]

Ruby:

    [[1, 2, 3], [4, 5, 6, 7], 1, 2, [3, 4, 5], 6, 7]

Case 3: "for"

Code:

    a = [1, 2, 3, 4, 5, 6, 7]
    for b, c, *d, e, f in [a] do
      p [a, b, c, d, e, f]
    end

Before:

    [[1, 2, 3, 4, 5, 6, 7], 1, 2, [], nil, nil]

After:

    [[1, 2, 3, 4, 5, 6, 7], 1, 2, [3, 4, 5], 6, 7]

Ruby:

    [[1, 2, 3, 4, 5, 6, 7], 1, 2, [3, 4, 5], 6, 7]
mruby-eval: fix typo
Merge pull request #2684 from kou/fix-splat-and-multiple-assignments

Fix splat and multiple assignments
khash.h: keep key/value table accessible from original hashtable during resize; fix #2682