Split token factory from serialization

I've returned the token factory to the sole duty of creating tokens from dirty server output and created a few things to tighten up the code (`TokenInterface` and `Serializable`, for example), as well as adding a serialize() and unserialize() method to do the actual serialization.  These were previously toArray() and fromArray(), but I though serialize was a better name since it might not be an array representation in other TokenInterface implementations.  Since enforcing the implementation of the static function fromArray()/unserialize() is not possible with an interface, and is technically illogical, I've made it a non-static member that can be called after Token instantiation to restore the values to that of the serialized data.  The serialize/unserialize methods are pulled in via the `TokenSerializer` trait, which satisfies the `Serializable` interface.