Claim codes [closes #19]

Depends on #34 

@cmcavoy can you review the changes below and make sure I didn't miss anything?

## Changes
* New Models
  * ClaimCodes
* Modified Models
  * BadgeInstances – add an optional `claimCode` field, used to store what claim code was used to award the badge, if applicable.
* New Routes
  * Adding a specific claim code (either single-use or multi-use).
  * Generating a single, random claim code.
  * Listing all claim codes for a specific badge
  * Claiming a claim code
  * Deleting a claim code
* Modified Routes
  * Awarding a badge: can now take a claim code. If the code is already claimed (and it's not multi-use), HTTP 400 is returned and the badge instance is not created. Otherwise, the code gets claimed before the badge is awarded.