Started completely re-writing the AST.

The current AST that's being generated by RubyLint::Parser is overly complex
and confusing due to the large number of classes used for different node types.
After having a discussion about ASTs and the likes with @whitequark I decided
that the AST generated by the parser has to be re-written from scratch.

To make things easier I'm using "Furnace" which provides a simple, immutable
class that can be used for representing nodes in an AST. Along with changing
the AST will come various changes to the way the definitions list is built as
well as how callback classes work (due to different event names being used).
None of this will be backwards compatible with what I've currently pushed to
Rubygems but that's expected when something is still alpha quality software.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Started work on the new AST.

The old tests and parser will be re-implemented in the following days. To make
things easier to manage I've removed these corresponding files from the Git
repository for the time being.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
New AST for basic method definitions.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Parsing of classes and constant paths.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Parsing of modules.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Parsing of method definitions using receivers.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Parsing of top level constants.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Parsing of various types of variable assignments.

The new parser is now capable of parsing assignments such as regular ones as
well as the dreaded expander assignments.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Test for passing a Hash as method parameters.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Parsing of binary and unary operations.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Parsing of if and return statements.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Parsing of for, unless, until and while.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Updated the Ruby version to use.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Cleaned up the parser.

Various similar callback methods are now dynamically defined instead of doing
this manually. This reduces the amount of code required as well as making
things easier to maintain.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Parsing of begin/rescue statements.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Added a contributing guide and a DCO.

The contributing guide serves as a starting point for those wishing to
contribute to ruby-lint. The DCO specifies the meaning of the signed-off-by tag
that is required for each commit.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Parsing of case statements and tenary operators.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Method calls on objects without parenthesis.

The parser is now capable of parsing methods called on objects, with parameters
but without parenthesis. Example:

    String.new 'foo'

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Renamed all the specification names.

The new names save some typing and are easier to read.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Parsing of super and defined statements.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>