be more explicit when retrieving a token's value and allow an option for preserving unknown tokens.

An unknown token is a tokenName which does not exist as a key in the options.tokens object.  By default unknown tokens will be removed the source text and replaced with an empty string.  By setting options.preserveUnknownTokens = true, the source text will not be changed when that token is not found.