Split JS files and async cleanup

- Split JS files to multiple smaller files. They are combined using a simple concatenator script (earlier I went with requirejs but that doesn't work very well because requirejs is mainly for asynchronous module loading while we want our js file to be a single file that acts as a library and is available immediately).

- A watcher script keeps watching the source JS files and runs the concatenator script to produce a single jigna.js file in the dist folder.

- Clear separation between the sync client and the async client. The sync client presents a completely synchronous interface (no deferreds) and the async client presents an asynchronous interface with deferreds. We ask our users to use the appropriate interface for each client, although it presents some minor surprises for the async client. @prabhuramachandran need offline discussion for that.

- For threaded method calls, a `jigna.threaded(obj, func_name, args)` api is provided rather than polluting the proxy with 'func_name_thread'.

- 'jigna' is also added to $rootScope so that it is available to the HTML template.

- All tests passing.