Full badge model

This adds the badge fields required by badgekit to store "full" information about a badge.  The most notably addition is criteria, which required a new database table, as criteria have a many-to-one relationship with badges.