Make AbstractArraySubject compatible with SubjectFactory

Change the supertype of AbstractArraySubject<S, T> to Subject<S, T>.
This enables deriving classes to the be used with SubjectFactory.

The old supertype (`Subject<AbstractArraySubject<S>, T>`) was not
compatible; for example, attempting to instantiate a
`SubjectFactory<PrimitiveIntArraySubject, int[]>` would be a
compile-time error due to SubjectFactory's generic constraints.