spotify-web-api: completely change the way the API works

* make the client return a request which can either be run async or sync
* removes distinction between synchrous and asynchrous and synchrous clients
* also reduces boilerplate code which means nothing - still much can be done thgouh