Make Discourse.ShareLink fully extensible

For example, this javascript code, if added by a plugin, would enable 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));
};
```