Formatting
Modified the task runner to return a promise instead of invoking the callback argument.
Refactoring, splitted up the source files.
Merge branch 'master' into fix-for-onTestComplete-2

Conflicts:
	Gruntfile.js
	tasks/promise-scheduler.js
	tasks/saucelabs.js
Fix for #116
The onTestComplete option can be set to a function returning a boolean or a promise.
Added new tests.
Added the src directory to the coding style checking.
Fixed the coding style errors.
Renamed testInterval option -> pollInterval
Renamed Job's pollId -> taskId
Preparing to add more tests.
Splitted the configuration of the grunt tasks into separate files. The load-grunt-config package is used to load them.
With the help of the onTestComplete configuratio option the negative tests are automatically executed, too.
Merge branch 'master' into fix-for-onTestComplete-2
Added negative tests for each of the supported testing frameworks.
Deleted the unused testReadyTimeout default option.
Deleted notifications.js
Moved the tunnel management into the saucelabs task. Deleted Tunnel.js.
Fixed the saucelabs-mocha:fails test.
Added examples for each of the supported test frameworks.
Added test for the throttled option.
Added a new test for testing the 'tunneled' option.
The other tests are executed on the same tunnel with the help of the grunt-sauce-tunnel npm package.
Changed the onTestComplete option to accept a node.js-style function

onTestComplete: function(result, callback) {
  // can throw synchronously
  if (...) throw error;
  // or can invoke callback synchronously/asynchronously
  // first parameter must be null in case of successful execution
  if (...) callback(null, newPassedValue);
  // or non-null in case of error
  if (...) callback(error);
}
Merge pull request #129 from gvas/fix-for-onTestComplete-2

Fix for #116