DecodeReturn is used by Code to provide varied information returned when decoding. You start the decoding process by initializing the DecodeReturn on a string you want to decode items out of. Then you repeatedly pass the DecodeReturn to Code.decode(...), and each time the DecodeReturn will contain information about the next token, namely, its type, the data of the token (depending on type, this can be in one of three slots, d, l, or s), and the start position for reading the next token.
In case of an error, type is set to DecodeReturn.T_ERROR, pos is kept at the token where the error occured, and s is set to an error message.
@author Sean Luke
@version 1.0