Determines if the datasatore can natively perform "retyping" which includes limiting the
number of attributes returned and reordering of those attributes
If the subclass can handle retyping natively it should override this method to return
true.

canFilter

If the subclass can handle filtering natively it should override this method to return
true. In this case it must do the filtering or throw an exception. This
includes the case of partial native filtering where the datastore can only handle part of the
filter natively. In these cases it is up to the subclass to apply a decorator to the reader
it returns which will handle any part of the filter can was not applied natively. See FilteringFeatureReader.

Not overriding this method or returning false will cause the feature reader
created by the subclass to be wrapped in a filtering feature reader when the query specifies
a filter. See FilteringFeatureReader.

Subclasses would override this method and return true in cases where the specific visitor
could be handled without iterating over the entire result set of query. An example would be
handling visitors that calculate aggregate values.