add castcollection method tests
casts: when indexing, only index iterable properties. castcollections: allow empty castcollections; properly combine data when property indexing
update plotting funcs and make sure it works without pylab