Make media functions take precedence over oembed

If a service's map declares an explicit media function for some type, it now
takes precedence over the type's media URL or oembed objects. This makes more
sense as a heirarchy and allows us to use media functions on objects with
oembeds. We can also do crazy things like present a Singly URL in an oembed
field, which we may have to do to provide access to original-resolution images
out of Shutterfly.

The order is now:
1. Media function from `exports.media[type]`
2. Media URL from `exports.type[media]`
3. Oembed `url` (photos only)
4. Oembed `thumbnail_url`

The only use of a media function so far is `media.contact` in `gcontacts/map`,
which defines neither a `contact.media` nor an `oembed.thumbnail_url`, so
nothing should be impacted.
Merge pull request #759 from Singly/better-media-precedence

Make media functions take precedence over oembed