we should apply the default scope before querying
remove unnecessary is_a check
split aggregates from association reflections to avoid is_a checks later
no need to cache hash lookups
sometimes singularize does not work, so we get a list of two strings. just uniq them
Keep sub-second resolution when wrapping a DateTime value

Add `DateTime#usec` and `DateTime#nsec` so that `ActiveSupport::TimeWithZone`
keeps sub-second resolution when wrapping a `DateTime` value.

Fixes #10855