Add an ArrayField

This allows lists of non-documents (e.g. strings) to be represented in Tavi.