/*
 *  call-seq:
 *     rxp.match(str)               => matchdata or nil
 *     rxp.match(str, begin, end)   => matchdata or nil
 *  
 *  Returns a <code>MatchData</code> object describing the match, or
 *  <code>nil</code> if there was no match. This is equivalent to retrieving the
 *  value of the special variable <code>$~</code> following a normal match.
 *     
 *     ORegexp.new('(.)(.)(.)').match("abc")[2]   #=> "b"
 * 
 *  The second form allows to perform the match in a region
 *  defined by <code>begin</code> and <code>end</code> while
 *  still taking into account look-behinds and look-forwards.
 *     
 *     ORegexp.new('1*2*').match('11221122').offset       => [4,8]
 *     ORegexp.new('(?<=2)1*2*').match('11221122').offset => [4,8]
 *  
 *  Compare with:
 *
 *     ORegexp.new('(?<=2)1*2*').match('11221122'[4..-1]) => nil
 */
static VALUE oregexp_match( int argc, VALUE * argv, VALUE self ) {