The parser can handle bindings in class declarations
Fixed the Class array in module to consider the Ident parameter

Fixed the fallout from this change
Changed core::Module to contain proper instances
First implementation of default functions in classes working

If a function is not defined in the instance a stub function is generated during core translation which calls the default function
Added a test for default functions
Added deriving keyword to the lexer
Added deriving to the parser
Typechecking takes into account derived instances
Fixed typecheck_string to doing the operator rewriting
Added deriving code generation for Eq

Only produces code for == since there should be a default implementation for /=

Conflicts:
	core.rs
	module.rs
Added generation of 'compare' in the Ord class
Generate constraints when creating derived instances for types with type parameters
Fix the checking of constraints when checking for instance existing

When a variable did not have a constraint which should interpret it as true since the variable does not matter for the test
Changed creation of default stubs to be after derived instances are generated
Workaround for instances such as Eq [a] where the 'a' is not known

Creating dictionaries for these situation (see vm::vm::instance_eq_list) is not yet implemented. This workadound just makes sure that tests relying on Prelude compiles
Changed the type for instance dictionaries to allow them to hold other dictionaries
Rough implementation of runtime construction of dictionaries

The dictionary type for the vm was extended to allow it not only hold function indices but also functions which hold their own dictionary.
Example:
instance Eq a => Eq [a] ...
When loading the dictionary for this instance each function in the instance needs to have the dictionary for Eq a applied to it. This forces the vm to do this at runtime.
The current way of doing this is very inefficient but it will do until more testing can be done.