Tokens::fromCode - add caching to speedup - for #398 issue.

you should not use ``static::`` to access a private property. Otherwise, it breaks when extending the class (because it will try to access ``ChildTokens::$cache`` which does not exist)