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: Reflect karma changes in the readme
Tests: Remove debug artefacts
Tests: Remove redundant 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
Tests: Deal with empty.js path

With "/base/test/data/empty.js" path karma runner will not show 404 errors,
for local run through actual browser, 404 path will be okay.

Hackinsh, but it's probably the best thing that we can do.
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
Build: Add more useful "test" task

With it you can specify browsers you want to run tests.
Example: grunt test --browsers=chrome-30,android_2.3