Badge sharing

This adds a bunch of functionality for badge sharing, including:

- [X] Middleware for looking up a badge by `public_path` (#334)
- [ ] Routes and views for individual badge pages (so far, we've got a route and stub view returning 501 Not Implemented) (#499)
- [ ] Clicking a badge goes to the private badge page (#288)