Platform overrides

Ok so this resolves #85. See the changes to the README to see how to use this feature.

I'd appreciate it if someone could have a look over this and see if I'm missing any use / edge cases and or could write more tests. 

In particular I'm going to add comments in a couple of places where I think my promise handling doesn't need to be as complex as it is. 

So what happens now is:

- The app manifest *has* to be read even if a ZIP isn't going to be created. 
- For each target platform, a platform-specific set of options are built if `platformOverrides.osx` exists in the manifest, for example.
- For a typical (non-ZIP) Mac build, I just skip the `package.json` during the copying step and just write a new one instead.
- If ZIPs need to be created, then as few as possbile are created. If only one of four target platforms has platform-specific overrides, then there will only be two ZIPs created.
- I never generate a platform-specific manifest and store it temporarily somewhere on disk like I thought I would originally.

---

cc @steffenmllr, @gabepaez, @dylangattey 
This is instead of `this._nwFile` because we could now have multiple (ZIP) files. Also,  `this.getZipFile('osx')` is a lot clearer than `this._nwFile` anyway.