Big code refactor in preparation for the code export

Hi Phil,

This pull request represents a large amount of work in preparation for the code export functionality.
a) Export button and dialog (currently not enabled)
b) Parameterized values for generating a single texture (immutable TextureParams to be used by SimplexTextureSource)
c) Parameterized values for combining multiple textures (immutable CombineParams used by TextureCombiner)
d) Moved generate and combine functions into class TextureFunctions.  They are pure functions.

Note that from a functionality point of view there is no change from before with this pull request. However, I would request that you closely review these commits because I think it would be good for us to be on the same page going forward and I would like you to understand my rationale for doing what I'm doing.

Sumio