Merge pull request #44 from blambeau/master

Move core extensions to lib/core_ext.rb
Updated CHANGES
Releasing 2.5.0
Updated CHANGES
Show why Match#method_missing is unsafe with a test.

The added test case shows that Kernel::p is actually called in place
of Match#method_missing when 'p' is used as a label or rule name.

As any gem might contribute private methods to Object, using Citrus
labels (or even rule names, actually) in semantic productions without
doing so with Match#captures is unsafe.

Moreover, the addition of any method/helper to the Match class may
potentially break an existing grammar, so it breaks Citrus's public
API and should probably increment the MAJOR version number.
Remove Match#method_missing, add Match#capture(name)

Match#method_missing is unsafe as illustrated in Github issue #41.
In particular, it makes composing a grammar with aribitrary gems
unsafe when the latter make core extensions, leads to unexpected
results with labels matching Kernel methods (e.g. `p`), and
prevents the Match class from getting new methods in a backward
compatible way. This commit therefore removes it.

A convenient method is provided to get a single capture by label
name. Calling string operators must now be done via Match#to_str.
Fix the Match#method_missing related test.