Small reorganization and simplification of the Token hierarchy:
* LongToken inherits directly from Token and gets a primitive long token
field, improving efficiency.
* BytesToken no longer inherits from AbstractToken as it was not making
use of any of its functionality.
* AbstractToken becomes applicable to Comparable tokens only, allowing
more shared functionality to be moved there.
* AbstractByteOrderedPartitioner is simplified as it is only used with
byte[] tokens.