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

Ah, misread that as `assert` instead of `static_assert`. Yes, we should indeed wait for the [C++11 migration](https://issues.adblockplus.org/ticket/768) with this.

However, I'm not really happy with the `CONTENT_TYPE_LAST` hack. It adds a bogus enum value that's going to be exposed to library users and will have to be accounted for in the code. We could assert that map.size() equals whatever the last enum value is, but that would defeat the purpose: If we miss an enum value above, we'll most likely forget to update the assert too. I suppose we'll just have to be careful to update the mapping when we add an enum value. Throwing for unknown strings as I suggested would help ensure this.