Fixed an example on insert_multiple and added a spec for it.
Fix non-determinism due to hash order on ruby 1.8 in recent spec change
Allow Dataset#count to take an argument or virtual row block

Previously, count always did count(*).  However, count(expression)
can be used for counting the number of rows where expression is
non-NULL.  Previously this was fairly easy to do via:

  dataset.get{count(expression)}

but this makes it even easier:

  dataset.count(expression)
Add set_column_not_null to alter table generator for marking a column as not null

I think this makes for a nicer API.  Something just feels wrong
about "set_column_allow_null :column, false".
Automatically wrap array arguments to most PGArrayOp methods in PGArrays

This makes it easier to use the methods.  For example, if you
want to check if an array contains both 1 and 2:

  Sequel.pg_array(:a).contains([1,2])

Before, you would have to do:

  Sequel.pg_array(:a).contains(Sequel.pg_array([1,2]))

Likewise, to check if an array contains either 1 or 2:

  Sequel.pg_array(:a).overlaps([1,2])
Make ValidationFailed and HookFailed exceptions have model method that returns the related model

Among other things, this makes it possible to use create and handle
errors when raise_on_save_failure is true:

  begin
    Model.create(:foo=>'bar')
  rescue ValidationFailed => e
    model = e.model
    # ...
  end

Before, you had to do:

  begin
    model = Model.new(:foo=>'bar')
    model.save

if you wanted to be able to reference the model if the saved failed.
Since saves can fail for both validations and hooks, extend this
feature to hooks as well.

While here, cleanup the exception message for hooks to explicitly
list which hook raised the error.
Allow overriding the convert_tinyint_to_bool setting on a per-Dataset basis in the mysql and mysql2 adapters

Unfortunately, because of the different APIs, the method used for
the per-Dataset overrides differs between the mysql and mysql2
adapters.  I was considering making the method name the same, but
on the mysql adapter, the method needs to take a field argument,
whereas on the mysql2 adapter, it doesn't, so the API would have
been different in arity anyway.

In the mysql adapter, you can override the cast_tinyint_integer?
method:

  def ds.cast_tinyint_integer?(field)
    super && true
  end

This can force the casting to integer even if the
convert_tinyint_to_bool setting is true.  Note that you cannot go
the other way currently, you can't force a casting to boolean
if the convert_tinyint_to_bool setting is false.  This is due to
how the conversion procs are handled internally.

The mysql adapter is flexible in that you can now cast tinyint(3)
columns to boolean if you want, instead of just tinyint(1)
columns.

In the mysql2 adapter, you can override the convert_tinyint_to_bool?
method:

  def ds.convert_tinyint_to_bool?
    true
  end

The mysql2 is flexible in that you can override both ways,
converting to boolean if the default is integer, and integer if the
default is boolean.

If you aren't sure which adapter you will be using, you can always
define both methods.

While here, enable to tinyint to boolean specs on the mysql2
adapter.  I guess it was an oversight that this wasn't already done.