Use native Promises

Also needed to define the Promise global for jshint (grunt-contrib-jshint does not use the latest version of jshint)
Added livestreamer version check

Moved the `which` logic into an amd module and made it fully asynchronous so the preparing-dialog can be properly shown while validating the livestreamer configuration...