fix Issue 13847 - CTFE internal error: dottype

Handle function values in each CTFE steps, then simplify
CallExp::interpret() and we need to interpret CallExp::e1 just only once.

After all, DotTypeExp will be one of the function values in CTFE, and
CallExp::interpret can distinguish 'virtual call' and 'direct call' properly.

Also simplify ThisExp::interpret because pthis is always interpreted to a
literal expression (TOKstructliteral or TOKclassreference).
fix Issue 13028 - [ICE] CTFE internal error: cannot evaluate at compile time
fix Issue 13528 - Internal Compiler Error: CTFE DotType
Explicitly truncate/widen shift value in OptimizeVisitor::PowExp
Merge pull request #4212 from ibuclaw/shiftcast

Explicitly truncate/widen shift value in OptimizeVisitor::PowExp
improve lexer error message
Merge pull request #4213 from WalterBright/lexermsg

improve lexer error message
Merge pull request #4208 from 9rnsr/fix13847

Issue 13847 - CTFE internal error: dottype