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.
Will add, I think it's also a possible candidate to become a public class, so all the more reason to document it well.