test(init): app should have correct meta data

Yay! Unit tests!

Use Karma test runner, Mocha test framework, Chai assertion library,
gulp-karma plugin to run Karma tests as gulp task.
Run tests in PhantomJS only for now.

Also preprocess source and tests using
karma-lodash-template-preprocessor (written specially
for this project ^_^).

Store Karma config in karma-config.js.
Add "files" config field to allow to run Karma tests without gulp.

Add "test" gulp task. You guessed what it does.
feat(build): run tests before build
refactor(build): translate karma-config.js to CoffeeScript

As Karma supports CoffeeScript out-of-the-box, rewrite karma-config
in Literate CoffeeScript.
refactor(init): translate code and tests to CoffeeScript

Use Literate CoffeeScript for code and tests.
refactor(build): translate gulpfile.js to CoffeeScript
style(source): rename old source files to 20_vkopt and so on

This allows to create several new scripts which run before old ones.
style(init): swap window.app and window.happy, make happy an alias
refactor(build): make "test" a dependency of "default", not "scripts"

As "test" task doesn't fail build anyway remove it from dependencies
of "scripts" task to allow to run them independently.
feat(ajax): add app.ajax.request() talking to sandboxed scripts

Add app.ajax.request() method which accepts request settings
(method, url, data, callback) and sends them to sandboxed extension
script which have permissions for cross-origin requests.
app.ajax.request() then listens for response and invokes the callback
once the response is captured.

Add source to source/ajax.litcoffee and
tests and docs to test/ajax.test.litcoffee

This is related to #4, #10, #22.
feat(ajax): add shortcut methods for get, head, post
feat(ajax): append GET params to url

Append GET params to url for GET and HEAD requests.

Use Lo-Dash for utility functions (uniqueId, cloneDeep, etc.).
See: http://lodash.com/

Use URI.js for URI manipulation (appending GET params).
See: http://medialize.github.io/URI.js/

Use bower for front-end dependencies management.
Use its API instead of CLI ($ bower install) because CLI forces to use
bower.json which must contain project name, version, etc.,
duplicating data in package.json.
See: http://bower.io/

Prepend Lo-Dash and URI.js to source during builds and tests.
Encapsulate Lo-Dash and URI.js inside app object using .noConflict():
- _ (Lo-Dash) goes to app.util
- URI (URI.js) goes to app.util.uri
feat(build): try to build Maxthon extension on non-Windows OSes

Instead of denying to launch maxthon-packager.exe on
non-Windows platforms, warn about it and go ahead.
If it succeeds, log about it.
style(ajax): use "unless" instead of "if isnt"
style(build): in gulpfile.js use parens instead of "do".

I.e. "process.cwd()" instead of "do process.cwd".
docs(ajax): add API section to test/ajax.test.litcoffee
docs(build): add basic dev documentation to gulpfile.litcoffee

Add the following sections:
- Tech stack
- Fork the repo
- Prepare environment
- Build unpacked extensions
- Install an unpacked extension
- Build extensions
- Tasks specification

Add headings for tasks to make it easier to read them.
Refactor build tasks documentation.

Add a note about dev docs to README.md and gulpfile.js

This is related to #4.
refactor(build): use destructuring assignment for child_process.execFile
refactor(build): move dist prefix ("name-version") to distPrefix global
docs(README): add a note: no published add-ons, but you can build it