Big overhaul of category type enum

The enum is no longer used. Category types will now implement the
CategoryType interface and define themselves for generic use all over
the app.