Go scanner

This is a tweaked version of #28.

### TODO:

* [x] Correctly handle E notation eg. `1.e+0`
* [x] Improve numeric literal handling in general (it seems ints are sometimes floats, etc., probably my bad)
* [x] Use :imaginary kind for numbers ending with `i`
* [x] allow \[uU] in character literals
* [x] predeclared identifiers (append, new, panic, etc.)

Also for reference: https://github.com/jayferd/rouge/blob/master/lib/rouge/lexers/go.rb