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
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).