adds support for parameter type annotations
refactored various old code, mostly the tokenizer
added type annotations for most functions