Mark paged_each as a dataset action method

This allows Model.paged_each to work.
Have #last and #paged_each for model datasets order by the model's primary key by default

I originally had planned to do this to #first as well, for
consistency, but it would have required extensive spec changes.
Also, such a consistency is not necessary.  The reason for doing
this for #last and #paged_each is that those methods require
orders, so having a default order by primary key allows them
to work without specifying an order explicitly.  #first already
works without specifying an order explicitly, so it doesn't need
a similar change.
Expand columns_introspection extension to handle subselects

If the query just selects * from a single subselect that doesn't
use a join, push the introspection to the subselect, since
the main query should use the same columns as the subselect.
Make Database#remove_cached_schema thread safe
Fix dataset integration test

The previous test wasn't wrong, but it didn't really test what
I wanted to test (a three-level from_self), because without
the from_self the last reverse_order.limit overwrote the previous
one.
Expand columns_introspection extension to consider cached schema values in the database