read_field needs to be able to read Sets and Maps

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
The read_record result should be driven by the schema

The client expects the schema to be satisfied, so fail early if
something is missing.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>