WIP Add support for browser field in package.json

Based on the unofficial spec
https://gist.github.com/defunctzombie/4339901

This is not complete yet, but I just wanted to get some feedback before I proceed.

If the browser field is a string, I simply map that onto descriptor's main, since that what it actually means. If the browser field is an object, I create a new descriptor.map property which is then used in the normalization hook. This way both loading and requiring modules goes through the mapper

There's one more thing missing which is being able to set modules to `false` in the map to prevent them from being loaded. I was thinking about creating a `rave/blank` module and map it to that.

If this sounds ok, I'll proceed with making sure it actually works well (i.e. write tests).
No. In createNormalizer:
 * a relative name comes in, for example `./something` (with a versioned refId, e.g. `foo@1.0.0#foo/main`)
 * after passing it through normalizeCjs it becomes `foo@1.0.0#foo/something`
 * so currently, if I want to map that, I need to compare with a versioned id, which is why I used `createUid`
 * finally, a versioned id `foo@1.0.0#foo/something` is passed to Line 9 of createNormalizer.

I wonder if `normalizeCjs("./something", "foo@1.0.0#foo/main")` shouldn't be returning "foo@1.0.0#foo/something", and instead return `foo/something`?
Or should it be called with unversioned `refId`?