Updates to ZPM

Ok this is kind of a big PR with many unrelated commits which will go away once you merge zed/master into your TheKiteEathingTree/zpm branch. The commits that are relevant to see what I did here:

1. https://github.com/zedapp/zed/commit/f169d09f831899f80e4b078a343385f04b5b13a0
2. https://github.com/zedapp/zed/commit/49f25d4dada3edda60194142649256ec62156c47

Basically I implemented what I mentioned in #90:
* Configs now have a `packages` key, whenever you add stuff to this, the URI in question (more on URIs later) will be installed and once installed, will be loaded.
* URIs can either be full URLs, or of the form `gh:username/repo:branch`, or `gh:username/repo` (master is implicit), `bb:username/repo` or `bb:username/repo:branch` which would all be expanded to their HTTPS equivalents

Things that I changed along the way:

* Extensions are now called packages (and live under `/packages`)
* `package.json` no longer need a `configFile` key (`config.json` is assumed), this is for practical reasons, but it also has the advantage of requiring less options in `package.json`
* `package.json` no longer requires an `id` key, since "pathified" versions of the URIs are used (colons are replaced with a slash).

As a demo, I moved out the spell checker into its own package: https://github.com/zedapp/spellchecker you can install it either the interactive way, or by adding `"gh:zedapp/spellchecker"` to your `packages` key in `user.json`, watch `zed::log` for messages.

I've also tested it by putting a (previously) not installed package in `/zedconfig.json` and it successfully installs the package and loads it only in that project and not others.

What do you think?