Merge pull request #515 from LLK/agal-macro-assembler

Updated AGALMiniAssembler and added AGALMacroAssembler
Moved shader code into embedded files
Fixed parsing line comments containing semicolons

Also squashed a warning and improved readability of code in flight.
Fragment shader ifdefs for effects and sampler count

This change also switches fragment shader compilation to use the
AGALMacroAssembler.
Track activated effects and build minimal shader

Seems to work in most cases but needs more testing; there are probably
cases where the effect refcount can become inaccurate.
Still to do: allow reuse of previous (cached) assembler output and
consider binding fewer texture samplers when possible.
Cache shader sets based on a calculated ID

The ID is calculated from the number of textures to be sampled and the
active effects.
The cache is flushed if the context is lost and (re)populated on demand.