Better way of handling assignments and variables.

This commit introduces a better way of assigning values and resolving
variables. This is done by using RubyLint::NestedStack instead of a collection
of arrays and nesting counters.

Note that the code in this commit is considered to be broken since a lot of
work still has to be done and a lot of tests (as a result of this) are still
failing.

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