Tools for dealing with Avro SpecificRecord collections using field names

- Rename SPCollections to AvroCollections, to contain methods for dealing specifically with collections of Avro records
- Now supports nullable fields and nested records (via . separated paths)
- Extract field behaviour to simplify and remove the need for "trivial" MapFns when
dealing with Avro SpecificRecords. We sacrifice some type safety by doing things in
this way, but because of the trivial nature of such "extraction" MapFns, it's
probably an OK tradeoff.
Yeah I think I agree, makes the pure functional nature of these functions explicit