Stash
Added a couple of benchmarks

They take to long currently
Merge branch 'master' into interner
Added simple string interner class
Update files to work with newest nightly, box and FromVec added
Changed most usages of ~str to I InternedStr

This gets the interner from the task local data more than necessary, it should be cached locally whenever it is needed often instead
Added some benchmarks, shows about 30% improvement for a complete compilation
Added the interner as a field to the lexer, improved parsing by 10%
Added '|' and '=>' as unique tokens to the lexer

Since these are never legal as operators it is better to have them directly as tokens
Replaced direct invocation of Type::new_op with specialized functions for the builtin types
Merged the ~ -> box changes

Conflicts:
	compiler.rs
	core.rs
	lambda_lift.rs
	lexer.rs
	module.rs
	parser.rs
	renamer.rs
	typecheck.rs
	vm.rs
Fixed all compile errors coming from merging and updating to the nightly
Fix mistake when changing explicit use of Type::new_op
Changed VM methods to free functions to workaround a compiler bug
Fixed warnings in the lexer and parser
Halved the time for the typecheck bench by around 50% by the use of unsafe
Hash on TypeVariables to only hash the id, 12% improvement for typecheck bench

Since the kind should always the same for variables with the same id this is ok
Removed duplication in typecheck.rs
Updated the Visitor trait to work on 'do' expressions
Changed add_edges to use the Visitor trait

To only need to update the walking of the expression tree once and for slightly shorter code