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