Changing the token enum to a type safe enum, "TokenType"

While I'm at it, should I remove the `SetType()` and `Type` and just make `type` public?