Optimization: Token::tokAt

Do not check sign of index in each loop step and do not check this pointer.
This needs an additional correction of Tokenizer::simplifyMulAndParens which calls tokAt on null pointer.

This is only small improvement and maybe it is too risky to no longer allow tokAt on a null this pointer. Even though one should never call functions on a null this pointer.
Optimization: Less calls of Settings::isEnabled in preprocessor

Less calls of Settings::isEnabled by calling it outside the loop and keep the result.
Optimization: templatesimplifier use Token::Match
Optimization: Token::update_property_info (strEqual hack)

In Token::update_property_info there are several string comparisons to similar strings in the same if-condition.
Transforming this to  inline comparisons give the compiler the possibility to optimize the condition due to the similar strings.
Optimization:  Correction matchcompile

The matchcompiler is not able to handle strings like in "extern \"C\"" used in Tokenizer::simplifyExternC.
The patch makes a general correction to this.
Unfortunately the usage of the matchcompiler in this specific case slows down the program. (I do not know why.)
Optimization As an add on I have the patch 8a_simplifiyExternC.patch which removes the "{|" from the token match since it is useless to
test if there is a "{" at the end or nothing.
Optimization: Tokenizer::simplifyVarDecl: Remove bookkeeping with typelen

The main purpose of this patch is to remove the additional bookkeeping variable typelen in order to make it easier to maintain.