Refactor script/js bindings, link generation and everything

In a resolver init method you can do now:
```javascript 
var MyLinkGeneratorPlugin = {
    generateQueryLink: function(query) {
        return Promise.resolve({"url":"yeeeehaaa"});
    }
};

Tomahawk.PluginManager.registerPlugin("linkGenerator", MyLinkGeneratorPlugin);
```

You can reuse the same object for several plugin instances. Currently ScriptPlugin in C++ is the core plugin which contains the actual binding part, in JS it's the particular instance ... will need to rename things a bit here.
Poor advice. If we use #include "Artist.h" we require a libtomahawk user to add e.g. /usr/include/libtomahawk/ to the include paths instead of only /usr/include. Yes, it makes our lives harder, but it makes our consumers' lives easier.