serialization: Require 'layers' for rootfs.type
serialization: Require 'layers' for rootfs.type

I'd rather drop the field [1], but have been unable to convince
Stephen that there would not be side effects of that approach.  So
we're back to my initial recommendation that we require the 'layers'
value [2] and require implementations to error out if they see an
unknown value [3].

The use of "unknown" vs. "another" allows image and implementation
authors to collaborate on additional layer types if they see a need to
do so while ensuring that users not party to such extensions don't get
silently-broken behavior.  This relies on extention types being
suitably namespaced/unique so that two separate extension groups don't
pick the same type string, but that seems like a reasonably safe bet.

The spec does not provide any way to version this field, so users
wondering "is my tooling modern enough to handle this image and any
rootfs.type extensions it may contain?" should ask their tooling to
validate the image.

[1]: https://github.com/opencontainers/image-spec/pull/224
     Subject: serialization: Drop rootfs.type (which had only one
       legal value)
[2]: https://github.com/opencontainers/image-spec/pull/211#discussion_r76521652
     Subject: serialization: remove windows-specific layers+base rootfs
[3]: https://github.com/opencontainers/image-spec/pull/211#discussion_r76706695

Signed-off-by: W. Trevor King <f75897670c17327c42ab201733fb8a81ff9f4c34@tremily.us>

mattspencer-arm/image-spec,mattspencer-arm/image-spec,jonboulle/image-spec,vbatts/oci-image-spec,xiekeyang/image-tools,opencontainers/image-tools,xiekeyang/image-tools,opencontainers/image-spec,opencontainers/image-spec,jonboulle/image-spec,vbatts/oci-image-spec,opencontainers/image-tools