Merge remote-tracking branch 'toolness/issue-121-api-claim' into v2.0
Merge remote-tracking branch 'upstream/v2.0' into v2.0
Added UI, route logic for editing categoryAward/Requirement/Weight.

Not really sure how to test this. Also, we should probably put information
about these fields in show-badge.html.

For the most part, though, this fixes #126.
Better server-side form validation error handling.

The server-side form validation is a last resort, but (at least on
badge creation and update) ValidationError responses from mongoose
now return a 422 Unprocessable Entity response with human-readable text,
instead of a 500 with a stack traceback (or nothing, in the case of
production instances).

Coincidentally, this also appears to fix #96, "raw PNG written to console".
Added /v2/unclaimed endpoint to get info on an unclaimed badge.

Fixes #93.
Added Badge#getRubricItems().

This method parses the criteria content by looking for bullet points
(lines that start with `*`) and converting them into rubric items
that match Aestimia's rubric item schema. If a bulleted line
contains the text `(optional)`, the corresponding rubric item is marked
as non-required; otherwise, it's required.

If no bulleted lines are found, the method returns an array with one
required rubric item, consisting of the text
`Satisfies the following criteria:\n` followed by the raw criteria text.

We still need to make API endpoints return the rubric information, but
hopefully this helps us get closer to a solution for #120.
Merge remote-tracking branch 'upstream/v2.0' into v2.0
Merge pull request #138 from toolness/issue-93-api-claim-badge-info

Added /v2/unclaimed endpoint to get info on an unclaimed badge.
Merge pull request #137 from toolness/issue-126-category-points-frontend

Added UI, route logic for editing categoryAward/Requirement/Weight.
Merge branch 'v2.0' into issue-120-rubric-parser
API endpoints that return badges now include rubric information.
Merge pull request #139 from toolness/issue-120-rubric-parser

Parse rubric information from criteria and provide it via the API
renamed some api tests.
API returns badges that are more like the ones in the wiki spec.
return program id/shortname in api badge responses
Issuers can now be saved w/o contacts.

Fixes part of #140.
Issuers are now listed alphabetically in a vertical list on admin index.

Fixes #142.
changing the optional status of a few fields
merge conflict
Age range field is now multi-select.

Fixes #144.