Check for Marketplace update, offer to download it if one is available (bug 1097430)

 * [ ] Merge zamboni side for the packaged app: mozilla/zamboni#2740
 * [x] Implement `applyUpdate()` in direct installer
 * [x] Style the banner and its buttons following mockups
 * [x] Map banner buttons, and change the content when the user chooses "download"
 * [x] Unit Tests

To test locally, you need to emulate the fact that you've got a Marketplace package installed. It can be done on Firefox Desktop while serving fireplace with gulp. Assuming you are serving Marketplace from `http://localhost:8675`:
- Build a dummy packaged app, put it in `src/app.zip`
- Build a dummy manifest and make it reference the app by setting  `"package_path": "http://localhost:8675/app.zip"`, then put it in `src/packaged.webapp`
- Open `http://localhost:8675` in your browser, open the console and install the app with `navigator.mozApps.installPackage('http://localhost:8675/packaged.webapp')`
- Verify with `navigator.getInstalled()` that the install worked, the package and manifest need to be valid, the result of `installPackage()` should give you hints if it failed
- Reload `http://localhost:8675` - It should check for update in the background, but not find any yet
- Bump version in manifest - reload `http://localhost:8675`, now it should offer you to upgrade
- Clicking download should download the app and update it to the new version
- If you reload `http://localhost:8675` should no longer offer you the update
Only the first `def.resolve` will trigger a `.then` handler. Is that expected? Once any of these events fire we're done?