convert Token, Tokens, TokenType

The java numeric types (int, long, double) correspond to python
types (int, long, float). Ultimately I'll rename the "double" things in
this api to "float", but I'm leaving the things named "double" for now.

This uses Enum (python 3.4) which will require the enum34 dependency for
previous versions, but I'm not worrying about the build yet, so I'll
deal with that later.