Another tweak to string cache

Side-step array append thus avoid calling into D's sluggish GC implementation too often.
Inclused another more vague tweak is to use malloc instead of uninitialized array (very minor speed up if not lost in the noise).

The end result overall is 4-5% faster execution times.

This pull adds another commit on top of previous pull #29. In other words you can pull both changes by merging this one.