Add implementations of Model#dup and Model#clone

Previously, these didn't have special implementations, which meant
that Object#dup and Object#clone were used.  Unfortunately, that
meant that the underlying data structures such as values were
shared, which is not desired.

The implementation of #dup follows the implementation of #freeze,
if #freeze would freeze an internal data structure, then #dup
will dup it.

Unfortunately, Model#clone cannot be implemented in the same
way.  Because Object#clone copies the frozen flag before
returning, you cannot modified the cloned object returned to
duplicate the internal data structures.  To work around this
issue, Model#clone is basically the same as #dup, except that
if the receiver is frozen, it will freeze the dup before
returning it.  This has the negative consequence that other
things that Object#clone does (such as copying singleton
classes and extended modules) do not happen when using
Model#clone.
Add Dataset#visible_class_name private method

This code was already duplicated in two places, and I would have
needed to make another copy, so add a method for it.
Add implementations of Dataset#freeze and Dataset#dup

Previously, Dataset#freeze broke the dataset, since you couldn't
clone it afterward.  Inside of using ruby's frozen flag, store
the frozen flag in opts.  Datasets are generally treated as frozen
anyway, with just the mutation methods modifying the receivers
instead of returning cloned objects, so add a manual check to
the mutation methods to check for frozen status.

Make dup the same as clone, but have it clear the frozen flag.

In order for frozen? to work, add a separate implementation that
just checks for the frozen flag in opts.
Remove default implementations of some query methods

I meant to do this in 4.0, but better late than never.  Instead
of defining query!, set_defaults!, and set_overrides! methods on
all datasets, only define them on datasets using the appropriate
extensions.

The set_overrides extension already had mutation methods defined,
but the query extension did not, so add them there.
Remove sequel_3_dataset_methods from Dataset::ACTION_METHODS

One consequence of this is the methods are no longer defined
as model class methods that call dataset methods.
Remove implementation of Model#set_values

I meant to do this in 4.1, but forgot.
Remove some comments about deprecation

Deprecation implies some future removal point, and I don't plan to
remove these.
Change default text used in Deprecation.deprecate

Sequel 4.0 has already been released, so this is no longer
accurate.  Probably best to just be vague about it.
Support custom :flags option in mysql2 adapter (Fixes #700)

This allows users to override which flags get sent to MySQL.  Users
who use this option are responsible for handling any behavior
change the flags cause.