implement String#scan, add proper MatchData, specs

- implement the String#scan method
- add a proper, top-level, reusable implementation of MatchData
- use MatchData in String#=~
- add specs
add missing predefined constants, implement RbConfig properly
fix missing requires in enumerable:select spec
honor block w/ arity > 0 in Array#each, enable spec
improve Module#const_defined?, Module#const_set & Module#const_get

- fix compliance of ancestor scope search
- implement inherit flag for const_defined? and const_set
- fix existing specs, add additional specs
- remove redundant underscore from const name regexp
implement rindex (substring case only)
implemented regexp search for String#rindex
implement StringScanner#skip
Merge pull request #253 from mojavelinux/const-methods-compliance

improve Module#const_defined?, Module#const_set & Module#const_get
Merge pull request #257 from mojavelinux/string-scan

implement String#scan, add proper MatchData, specs
Merge pull request #261 from mojavelinux/predefined

add missing predefined constants, implement RbConfig properly
Merge pull request #262 from mojavelinux/fix-missing-require

fix missing requires in enumerable:select spec
Merge pull request #264 from mojavelinux/rindex

implement rindex (substring case only)
Merge pull request #265 from mojavelinux/strscan-skip

implement StringScanner#skip
Merge pull request #263 from mojavelinux/each-block-arity

honor block w/ arity > 0 in Array#each, enable spec
implement StringScanner#get_byte
allow Opal.Numeric in Array#[], add Regexp#source
Merge pull request #267 from mojavelinux/minor-fixes

allow Opal.Numeric in Array#[], add Regexp#source
Merge pull request #266 from mojavelinux/strscan-get-byte

implement StringScanner#get_byte
allow severity of dynamic require to be controlled