Discover persona audience from request.

* We are going to be serving the backpack from two locations for a
  little while: beta.openbadges.org, and backpack.openbadges.org. This
  means that the audience needs to be derived from the request rather
  than from the server configuration, so that's what this commit does.

* Also, I've done a lot of refactoring to make things generally better,
  hopefully.