Support negative numbers

Fixes #6.
Adds some string utility functions, improves the tokenizer.
And most importantly, adds support for negative numbers.