appc/spec: Collapse app and fileset manifests

This reworks the app image and fileset concepts to collapse them into a
single manifest, the App Image Manifest. The execution details are now
optional. It also describes a dependency retrieval/matching process
based on labels.
appc/spec: path_whitelist -> pathWhitelist
appc/spec: "app" -> "manifest"
appc/spec: minor cleanup
*: numerous updates to match spec

Changes to schema:
- removing FilesetManifest
- update example manifest to match that in spec
- splitting out App into a dedicated type embedded in AppImageManifest

Changes to tools:
- update aci writer (no more filesets)
- update actool build (no more filesets)
- update actool validate (no more filesets)
- update ace validator to use new types
- update rocket stage0/stage1 to new schema
- update ace app manifests to new spec
- fix a bug in build_aci (double compressing aci)
*: AppImageManifest -> ImageManifest
appc/ace: update name in validator
appc: fix relative paths in app validator

strings.TrimPrefix was not correct since it resulted in different
behaviour depending on whether the directory passed had a trailing slash
or not (this meant for example that `actool validate foo/` would succeed
but `actool validate foo` would fail)
Go has a function for the correct behaviour in filepath.Rel, so use it.

Also small style updates to keep up with the recent
appmanifest+filesetmanifest --> ImageManifest change
Fixed issue in which *app can be nil

Signed-off-by: Levi Gross <levi@levigross.com>