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
fix Issue 13832 - delegates that return ref do not output correctly to .di file
Merge pull request #4201 from 9rnsr/fix13832

Issue 13832 - delegates that return ref do not output correctly to di file
fix Issue 13784 - Wrong code with modulo operation and optimisations enabled
Merge pull request #4214 from WalterBright/fix13784

fix Issue 13784 - Wrong code with modulo operation and optimisations ena...