Multiple key size support & Async key generation

As I told you here the pull request to support multiple key size. I had to add part of a few libraries:
* [lapo-luchini/asn1js](https://github.com/lapo-luchini/asn1js) for ASN.1 structure parsing
* [kjur/jsrsasign](https://github.com/kjur/jsrsasign) for creation of ASN.1 structures
* [KevBurnsJr/rsasync](https://github.com/KevBurnsJr/rsasync) for async key generation

Moreover I wrote a few tests just to make life easier while testing browser compatibility, jsdoc compatible comments (to build -> ` jsdoc src/jsencrypt.js `) and refactored the web page using bootstrap (you can view a preview [here](http://zoloft.github.io/jsencrypt/))

Tests are written using mocha and expect.js and are accessible only via browser since none of the used modules are written for node.js. Now I'd like to modify the resulting source code (the bin/jsencrypt.js to be clear) to make it compatible with closure compiler in advanced mode. I have already made some tests and it seems to be possible without too much effort. I suggest you to tag the master before accepting this pull request since some changes breaks the full compatibility with old code (Now public and private key parameters are stored in a single rsakey object, so if you assign the private key and then assign the public key private key parameters will be lost)

If you think something is wrong please tell me and I will check

Antonio