Updated from global requirements

Change-Id: I201c1593fc12cd2cac3db30e35483320cf0ed663
Treat null values in JSON as being absent rather than 'None'

The current method of serialization for keys containing null
values in JSON input files is that they become a part of the
metadata tree, with a value expressed as the string 'None' in
output (when invoked with --key) or when inserted into templates.

The use of 'None' creates awkward ambiguity (no way for downstream
code logic to tell if the request JSON key originally contained
the string "None" or if it was actually null), and also throws
conversion errors when requested in any type other than 'raw'.

This patch proposes that keys with null values be handled as
though they were absent from the metadata completely. (If
such a key is requested in command-line invokations using "--key"
and "--key-default", the provided default will be printed.)

Change-Id: I9288dffb13d781e0c4dd9e5be0b483c090ec2d7c
Extract OacFile class to separate file

Change-Id: I97448fe2b503314398db5928ec6a3bbfffe6b2be
Set owner+group from control file

Add keys 'uid' and 'gid' to control file. The values may be UID/GIDs or
names. In either case, the value is checked against the passwd/group
database to ensure it exists.

Change-Id: I1730a126cf024755635043b1a0f70006ab22c046
Allow extraction of list items

OAC can be used to get a key from metadata by supplying EG '--key A'.
You can also extract an item from a dict, EG '--key A.B'.
However, if A is a list, there's no way to get an item out of the list.

Extend the expression language (if that's not too grand a term) to
support this. EG '--key A.0' gets the first item out of the list A.
'--key A.1.B' gets B out of the second item of list A (which must be a
dict).

Change-Id: I406cbd2d974544ed5948e137359629184d8ee156
Merge "Allow extraction of list items"
Merge "Set owner+group from control file"
Merge "Treat null values in JSON as being absent rather than 'None'"