More Lua API enhancements

includes touchups to gdi01.

I'm not sure if I got all the places where I am supposed to use `.Dispose()` right. That is definitely something you should look out for during review.

[gdi02](https://github.com/obrakmann/OpenRA/compare/gdi02), [gdi04c](https://github.com/obrakmann/OpenRA/compare/gdi04c), [nod01](https://github.com/obrakmann/OpenRA/compare/nod01), [nod03a](https://github.com/obrakmann/OpenRA/compare/nod03a) and [nod03b](https://github.com/obrakmann/OpenRA/compare/nod03b) are done as well. I'll open PRs for them once this has been merged.
too many spaces for my taste