schema: Modify AIM dependency declarations to use "app" and "imageID"

Modify the Image Manifest Schema so that it is more clear that
the dependency is refencing an app by name and an image ID.
(synchronize naming between AIM and CRM)
schema: Use "app" and "imageID" in Dependencies type.

Update example image.json to use "app" and "imageID".
Update schema Dependencies type to use the same..
schema: Fixup Name rename to App in assertValid error body.
Merge pull request #50 from cdaylward/master

schema: Modify AIM dependency declarations to use "app" and "imageID"
SPEC: have discovery walk up the tree

The basic idea is that people may not want to have a landing page for
every container name but will instead want a landing page for an overall
project. This would let people do this as the discovery algorithm will
walk up the tree from example.com/project/app1 to example.com/project to
example.com.
Merge pull request #52 from philips/issue_18

SPEC: have discovery walk up the tree
schema: add omitempty json tag option to optional types.

On Marshal empty types will be omitted instead of creating a lot of
"type": null json objects.

Example.
Before:
{
    "acKind": "ImageManifest",
    "acVersion": "0.1.1",
    "name": "example.com/test",
    "dependencies": [
        {
            "app": "example.com/test02",
            "imageID": "sha512-c98bf6328037ba1272e2a36142405835ced3e44504e39eb9d02f64f59f598790",
            "labels": null
        }
    ],
    "labels": null,
    "pathWhitelist": null
    "annotations": null,
}

After:
{
    "acKind": "ImageManifest",
    "acVersion": "0.1.1",
    "name": "example.com/test",
    "dependencies": [
        {
            "app": "example.com/test02",
            "imageID": "sha512-c98bf6328037ba1272e2a36142405835ced3e44504e39eb9d02f64f59f598790"
        }
    ]
}
actool: truncate file during build if overwrite=true
Merge pull request #66 from sgotti/schemaomitempty

schema: add omitempty json tag option to optional types.
Merge pull request #67 from jonboulle/trunc

actool: truncate file during build if overwrite=true
schema/types: add ACName.Set()
discovery: do not set defaults for os and arch.

os and arch can be optional as there can be "noarch" (without machine dependent
code) aci.
discovery: Ignore templates that cannot be completely rendered due to missing labels.

If meta discovery template cannot be completely rendered due to missing labels
it should not be added to the list of available download uris.

Also create the template vars slice from all the available labels instead of
only some predefined ones (name, version, os, arch).
Merge pull request #69 from vcaputo/acnamesetter

schema/types: add ACName.Set()
Merge pull request #61 from sgotti/discoveryvalidtemplate

discovery: do not set defaults for os and arch and use only fully renderable meta templates.
schema/types: split out Exec to its own type

`App.Exec` parameters and `EventHandler.Exec` parameters should undergo
the same validation.
Merge pull request #68 from jonboulle/exec

schema/types: split out Exec to its own type
spec/types: clarify only one eventHandler per type