improve optimization potential of std.ascii

What this does:

1. optimizer is better at constant folding after inlining when memory is not referenced

2. code generator can often generate bit masks for these operations

3. avoiding memory references can speed up execution when all that is needed is in registers

The old ctype table lookup thing is obsolete for modern CPUs and compilers.