Require kernel change

I forked the require kernel so I could make some changes

Mostly the performance (due to # of http requests) was too poor.

https://github.com/ether/etherpad-require-kernel/blob/master/kernel.js#L456 shows the change I made.

We still need to address the issue of it not loading modules that don't serve their main file as ``/index.js``

It needs a lot of testing, I didn't test IE.

So why this version:

  - [x] Reduce # of http requests
  - [x] All tests pass (backend and frontend)
  - [x] Allow loading of modules that don't load from index.js <-- You can see  a bodge fix in for ``async`` and ``unorm`` -- perma fix required for plugins that provide a components.json that includes a main section..  Example cmponents file:
```
{
  "name": "async",
  "repo": "caolan/async",
  "description": "Higher-order functions and common patterns for asynchronous code",
  "version": "0.1.23",
  "keywords": [],
  "dependencies": {},
  "development": {},
  "main": "lib/async.js",
  "scripts": [ "lib/async.js" ]
}
```

In this instance our require would be ``("async/lib/async.js");``

Actually there are only two modules that exhibit this behavior, async and unorm..  For now I have put a hard hack in place for them...  It will suffice until we decide what we're doing w/ require kernel and yasjml

  - [ ] Minify plugins -- Probably beyond the scope of this PR though -- https://github.com/ether/etherpad-lite/issues/1777
  - [ ] Have a discussion about bundling the most common plugin functionality into core.  Rich text editing flag in settings.json and include   (This is outside of tte scope of this PR too)