Make Discourse.ShareLink fully extensible

For example, this javascript code, if added by a plugin, would allow for a Tumblr share link:

```js
Discourse.ShareLink.supportedTargets.push('tumblr');
Discourse.ShareLink.iconClasses.tumblr = 'fa-tumblr';
Discourse.ShareLink.urlFor.tumblr = function(link, title) {
    return ("http://www.tumblr.com/share/link?url=" + encodeURIComponent(link) + "&description=" + encodeURIComponent(title));
};
```