Changed Type struct to always hold type parameters

Since types such as Functor f => f a should be possible even variables needs to be able to have type parameters.
Fixed unused variables some warnings
Functor compilation is working

This is not exact and may let some types through which should not be possible depending on the constraint on the instance since only the TypeOperators identifier is tested when a lookup is performed (see fn has_instance)
Formatting Types skips wrapping parentheses and outputs functions in infix form
Fix check when unifying two TypeOperators
The Unwind instruction should continue until a primitive is found
The list type can be parsed without parameters
Added variable lookup for tuples in both typechecking and the compiler
Added '!' to the grammar as a valid operator char
Fixed bug when parsing tuple types.

sepBy1 does not back track after failing hence the need for backtrack
Added Enum class and instances for Int and Double
Added more functions to the Prelude
Added backticks to the lexer