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)
OSX reports x86_64, not amd64, as a machine/CPU/architecture in all reports I have checked (uname, config.guess, Chef's ohai, Puppet's facter). Using `amd64` would be confusing, I believe. This is one of the reasons why I believe architecture makes sense only in context of OS: different systems not only support different hardware, but they also may have different vocabulary and make different distinctions.

Linux and FreeBSD use "amd64" in most of the sources and in names of the install distributions, so using "amd64" here is consistent with these platforms' vocabulary (some Linux distributions/kernels say x86_64, I don't know what is the practical difference, but I think amd64 is more popular; if somebody makes an argument that we should separately whitelist x86_64, and that there is a practical difference, we can always add it later).