CASC-200 Pluggable Configuration Strategy

First pass at cleaning up configuration.  Some notes/thoughts:
1. No unit tests yet (beyond cleaning up existing). Was waiting until design got the "ok".
2. I like using an enum for keys though I'm not 100% sure I like everything being in one enum (though we may have to since some keys are shared)
3. Tried to think of a way to associate the default value with the key definition rather than passed in but couldn't think of a way since they are all different class types.

There may be some additional configuration clean up we could do (i.e. writing out retrieved property value in config code versus in each filter, etc.) but I figured let's get this par refactored first :-)  I think this would lend itself nicely to a new type for reading from a property value. (though I didn't implement it yet)