Issue 1286 - Add a content type enum for use with FilterEngine

I'm wondering if we shouldn't just throw here for invalid string values. It's different from how things work now, but I do think we won't come up with bogus content types in the core code, and the application will be fine as long as it's using the enum. What do you think @palant?