implement Module#constants, first and second form

- when called on Module (or Class), retrieve global constants
- when called on Object, retrieve constants scoped to instance
set $~ to match array in String#sub, convert undefined values to nil
implement Array#min and Array#max + specs
Merge pull request #252 from mojavelinux/module-constants

implement Module#constants, first and second form
Merge pull request #254 from mojavelinux/more-match-data

set $~ to match array in String#sub, convert undefined values to nil
Merge pull request #255 from mojavelinux/array-max-min

implement Array#min and Array#max + specs
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