Added app features data model (bug 821115)

The reason for the Django model with dynamic fields is so we don't duplicate feature lists in both the model and a constant. We'll need these constants elsewhere later as we build out the rest of the feature detection code.