FEATURE: validate app manifest

This change introduce a validation step in the install/update pipeline
and show validation errors descriptions into the dashboard,
a new remote SimulatorActor command (validateManifest) use
b2g PermissionsTable and AppsUtils.checkManifest to detect
and prevents known error conditions.

- update cached manifest
- validate manifest on install/update

blocking errors:
- missing manifest
- manifest json parsing error (using jsonlint)

non-blocking errors: 
- missing name
- missing icons (fix #311)
- missing 128 icon (needed for marketplace submission)
- wrong type (e.g. hosted could not be type privileged/certified)
- unkown permission
- denied permission
- invalid access

simulator warnings:
- certified apps are not officially supported on the simulator
- WebAPI 'WebSMS' is not currently supported on the simulator
- WebAPI 'WebTelephony' is not currently supported on the simulator

DEMO: http://youtu.be/Py8FCadnOH8