Made OptionFactory registration take a string key.

This decouples the actual implementation from usage.
Made some form variables protected.

This keeps them from being serialized to json automagically...
Improved and consolidated injection