Rename methods for clarity, organize codegen into a separate directory

The rename is just for clarity - I think the new names are much more clear (That's open for discussion, of course)

I moved RUNTIME_ARRAY into it's own header, so it's not declared in THREE places. There are other repeated declarations that can and should also been broken out into their own headers.

My intent with moving codegen-related files into their own directory is to make the isolated nature of that component clearer. Eventually, I'd like to have it separate enough as to be first compiled into it's own static library - and possibly used from other projects.