Build: Use karma to automate unit testing
Test: Make selector tests execute in new env
Test: Make extending tests execute in new env

Remove "exclude" option from karma.conf.js
Test: Modify url helper

Modify url helper so it could work in karma environment
Test: Make utilities tests execute in new env
Build: Check karma.conf.js through jscs and jshint
Build: Small simplifications of karma config
Build: Update "npm test" command and readme
Test: Remove debug artefacts
Test: Remove redandunt instructions
Build: Move karma config to test folder

* Add "empty.js" file into the karma server
* Add and correct some comments in karma config
* Small simplification of instructions of the karma grunt task
* Remove karma dependency from the package.json since it's a global package
Build: Use browserstack through karma runner
Test: Remove empty.js file

For the test that uses this file it does not matter if file exist or not, but
configuration of karma server and QUnit testsuite would became a bit trickier
Build: Specify browserstack settings
Build: Change karma initialization strategy

* Add secure environment variables

* Instead of the "browsers" module use "launchers" to store
  browserstack browser launchers info and "environment" which
  would change karma settings for different environments
Build: Clean up

* Lint karma modules
* Prettify some statements
* Use "use strict" statement in karma modules
Docs: Reflect karma related changes in the readme
Build: Execute tests in Firefox from forks
Build: Reset karma browsers option at watch task

Even if developer has browserstack access, do not use it to run all
supported browsers at watch task, since it's execution will take a long time