Ads in rotation, random ad endpoint, couchapp fixes

The move to node-couchapp dropped a few methods and this commit adds
those methods back in. The biggest change was to re-add the
registeredUser method that grabs a registeredUser from the DB and the
addition of the adsInRotation which grabs the object containing the
latest closed auction information.

Also included in this commit, a "in rotation" boolean was added to the
ad object for the user to signal which approved ads should be used for
advertising. This allows the user to "rotate" in or out as many ads they
want after having won slots in the auction. If there are more ads than
auction slots won, it reduces the overall chance of each ad being
displayed. The DB functions and extra validation cases were added to
account for the extra boolean.

A extra panel was added to the user profile page that displays ads that
are "In Rotation."

A Blacklisted Country array was also added to the Ad object. This
specifies countries where this ad should not be shown. The same DB
function updates and validations were added for this change.

The auction closing event was modified to only cull the winners of the
auction to be saved to the DB as a adsInRotation object. This object
should be a living object that should have no more than one copy in the
DB at any time. The name will also be changed at a later point. This
object is used when the random ad endpoint is invoked.

The new random ad endpoint takes the adsInRotation object and finds the
winners of the last auction. It chooses a random user, then grabs all
approved and in rotation ads for that user. It then chooses a random ad
and returns that as json.

This endpoint will be further modified later to account for user ip and
specifying a number of ads to return rather than just one.

The profile, ad, and ad upload views were all updated to reflect the
changes in this commit.