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
Merge pull request #257 from mojavelinux/string-scan

implement String#scan, add proper MatchData, specs