Go scanner

This is a tweaked version of #28.

### TODO:

* [ ] Correctly handle E notation eg. `1.e+0`
* [ ] should the imaginary suffix be part of
* [ ] allow \[uU] in character literals