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
Merge pull request #62 from jonboulle/master

spec/types: clarify only one eventHandler per type
schema/types: validate label uniqueness
spec: clarify that label names must be unique
Merge pull request #64 from jonboulle/master

spec: clarify label uniqueness