Add PlaceholderLiteralizer#with_dataset, for returning a new literalizer using a modified dataset

While it doesn't make sense to call methods that would change the
SQL used, since the literalizer uses static SQL, this makes it
possible to change the row_proc or other non-SQL options while
still being able to use the loader, and without affecting the
original loader.
Make tactical_eager_loading plugin work for limited associations

Previously, Dataset#post_load was not called in this code path,
so the tactical_eager_loading metadata was not setup.  Call
post_load explicitly to make sure things are setup.

To avoid eagerly loading associations specified by the :eager
association option in this case this case, move the cascade
handling and integrate it into the elsif and else blocks.
Use the new placeholder literalizer with_dataset method in the
else block to clean up the code.