Frontend & models for (some) extra badge fields

This is still missing the prereqs stuff, but this adds age range, time
to earn, category and badge type to the backend models and the
frontend. This also had some refactoring of the badge `create` and
`update` endpoints to pull out common code.