Add assert_list to ensure an argument is a list

This enforces fields like sources, resources, to be a list (or an acceptable set of types which can be turned into a list).

This avoids the case where resources = 'valid/pointer' is resolved as resources = ['v', 'a',,,] while still enforcing that the field is a list.