type inferring initial

- refactor all tree nodes to support return values
- generify BaseASTVisitor
- extract TYPE to its own class
- add TypeGenerator
Merge branch 'master' into types
basic type checking, refactorings

- working static type checking for expressions
- add exception signatures for TreeNode classes and BaseAstVisitor
- new CastException and BaseAstException
Merge branch 'master' into types

Conflicts:
	src/com/lolcode/tree/AstBuilder.java
add scope and function checker, add exceptions, fixes, refactorings

- add ScopeChecker class, see its documentation
- add exceptions for scope checking
- add equals() for TreeVariable and TreeFunction
- move checkers to another package
- add missing exception signatures
- remove obsolete logging
- fix tests for ScopeChecker
- pretty print errors