Make Dataset#joined_dataset? a public method

This was previously a private method, but I think it is generally
useful, and plan to access it in the model layer, so it should be
public.
Use qualified columns in lazy attributes predicate

An earlier commit made the selected columns qualified, but didn't
change the predicate column reference when eagerly loading.
Fix qualification of columns when Dataset#graph automatically wraps the initially graphed dataset in a subselect

If the initial dataset is wrapped in a subselect, then you need to
change the selection to a simple selection of columns from the
subselect qualified by the alias of the subselect.

While here, use joined_dataset? and _hash_key_symbol instead of
duplicating them poorly.
Qualify primary keys for models with joined datasets when looking up model instances by primary key

If the model uses a joined dataset, but also has a primary key,
assume the primary key is contained in the table specified by
the model's table_name, and use a qualified version of that
when looking up model instances.

This fixes issues when the primary key would be ambigious as
it is present in multiple tables in the model's dataset.
Switch class_table_inheritance plugin to use JOIN ON instead of JOIN USING

JOIN USING is not supported by all databases.  With recent changes,
using JOIN USING stopped the class_table_inheritance plugin from
working on Oracle, due to automatic qualification in the
lazy_attributes, and the fact that on Oracle, using JOIN USING on
any column means the columns cannot be used in qualified form
(even though that's umambiguous).

As JOIN ON is supported by pretty much all databases that Sequel
supports, this opens the class_table_inheritance plugin to be used
by many more databases.

Note that this is not completely backwards compatible.  Anyone
manually using the unqualified primary key column in a dataset
filter for a subclass of a class using the class_table_inheritance
plugin will have to update their code to use a qualified primary
key column.

Additionally, the class table inheritance plugin now uses
explicit column selections for all tables, except that it excludes
the primary key columns for subclass tables, since those must
match the main table and there is no reason to duplicate them.

While here, remove some spec guards for old versions of SQLite.
Update example SQL code in the class table inheritance plugin