schema/types: add Hash.Set() UUID.Set(), and Hash.Empty()

Set() in addition to String() fulfills the flag.Value interface enabling
convenient commandline parsing for these types as Var flags.

Hash.Empty() is just useful like UUID.Empty(), I'm presently using them
check if variables of these types have been set to anything as flags.
Merge pull request #38 from vcaputo/uuid-hash-setters

schema/types: add Hash.Set() UUID.Set(), and Hash.Empty()
SPEC : cleanup
Merge pull request #39 from rahulgopan/master

spec: typo fix (images -> image)
README: update to reflect actool is now quiet by default
Merge pull request #41 from jonboulle/quiet

README: update to reflect actool is now quiet by default
spec: default digest format is sha512

Currently the ACI spec leverages sha256 as the default digest format, which
is not as performant on 64-bit systems. A modern 64-bit processor can compute
a SHA-512 hash in about 50-75% of the time it takes to create a SHA-256 hash.
(This is because SHA-512 primarily uses 64-bit data types.) Considering that
container images can become rather large, this is substantial.

Fixes #8
Merge pull request #24 from rckclmbr/sha512

Use sha512 instead of sha256
schema: expose functions to retrieve label values
Merge pull request #40 from 3ofcoins/expose-labels

schema: expose functions to retrieve label values
schema: expand OS/arch whitelist to allow other platforms

Introduced a map of valid OS/architecture combinations to allow
implementations supporting platforms other than linux/amd64. I can't
figure out at the moment how to warn rather than fail during JSON
validation without resorting to "just print to stderr" approach. A
workaround for an implementation would be to add own values to the
`ValidOSArch` map, but this would still not allow full flexibility.

Additionally fixed a typo in Labels.UnmarshalJSON that prevented the
validation from actually being executed (an empty `l` Labels were
validated, rather than deserialized `nl`).

Improves #6 (not a full fix, as unlisted combinations still fail)
spec: ensure executable is absolute path
Merge pull request #33 from 3ofcoins/expand-os-whitelist

schema: expand OS/arch whitelist to allow other platforms
schema: fix printf flag in labels test
Merge pull request #42 from jonboulle/abs_path

spec: enforce absolute path to exec
schema: Fix optional app and required app.user and app.group.

From the SPEC app is optional. Make it a pointer to handle empty values and add
omitempty to App json tag to avoid creation of an "app":null json object.
Add a test to verify working empty app.
From the SPEC user and group are required. Fix and ddd tests.