Keep a master offset in Match instead of slicing.

Instead of successively slicing strings in matches, we keep the
parsed text under @source, and an offset in the later in @offset.

Btw, that @offset might be very useful for keeping trace of the
localisation of the match in the source text (e.g. for subsequent
semantic passes; semantic error detection for instance).
Keep input instead of string in Match.

For traceability of matches inside the parsed string, we now keep
the Input instance instead of the source text in matches. This is
transparent for the Match class, as it simply expects its input to
behave like a String (to_str). That method has been added to Input
accordingly.
Let Input support multiple sources of parsed text.

This commit makes the Input class supporting various text sources,
such as a String, a Path, a File, etc. The real source passed at
construction is kept under @source for traceability.

Common rubyisms are used to recognize those sources. In particular,
Pathname instances will be recognized through respond_to?(:to_path),
which is standard in ruby 1.9.x. Files and IO are recognized through
:read. Strings and StringIO through :to_str.
Add Match#source as a shortcut for input.source.

This method allows locating the original parsed source during the
production of semantic values. It is roughly a shortcut for
`input.source` but is robust to situations where matches would be
created with strings (such as in the tests).
Add a GrammarMethods#parse_file method.

While the parse method already accepts Pathname instances and the
like, some users might prefer making explicit the fact that they
want to parse from a file. A Pathname instance is automatically
created if needed.
Minor syntactical changes
Minor syntactical changes
Updated CHANGES
Don't hide Errno::ENOENT behind Citrus::Error
Removed Ruby warnings.
Merge pull request #42 from tbuehlmann/master

Removed Ruby warnings
Move core extensions to lib/core_ext.rb