Fix Issue 12164 - Function returning ptrdiff_t.min in 64-bit returning 0 when -O is set

The trick used to optimize ?const:const doesn't work when you can't actually express the value as immediates.  They were silently truncated leading to incorrect results.

Values were also truncated due to a typo.
Use an alloc function for Token freelist instead of operator new.
Fix Issue 12820 - DMD can inline calls to functions that use alloca, allocating the memory in the caller function instead.
Fix Issue 13023 - optimizer produces wrong code for comparision and division of ulon
Merge pull request #3805 from yebblies/issue12164

Fix Issue 12164 - Function returning ptrdiff_t.min in 64-bit returning 0 when -O is set
Merge pull request #3809 from yebblies/issue13023

Issue 13023 - optimizer produces wrong code for comparision and division of ulong
Merge pull request #3808 from yebblies/tokalloc

[DDMD] Use an alloc function for Token freelist instead of operator new.
Merge pull request #3811 from yebblies/issue3918

Issue 12820 - DMD can inline calls to functions that use alloca, allocating the memory in the caller function instead.