Pull in winutil.h fix.
Rewrite CArrayFor to make it more robust.

The problem with the earlier version was that it could completely flip
out if you added anything to an array during a loop. By "completely flip
out" I mean hand you a pointer into blind memory and probably cause a
seg fault. As I learned the hard way.

The new version also has the advantage of an included and editable
index, but at the cost of slightly more overhead and slightly
harder-to-remember parameter order.