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.
Nice tests, they make it quite clear what the class actually does.