Allow building of non-erased collections through ClassTags.

- All Types and Shapes carry a ClassTag.

- Executors use the result type's ClassTag to get the correct builder
  for the result.

- Provide a CollectionTypeConstructor for Array types.