Refactor set-restricted based mass assignment methods

This changes set_restricted and update_restricted to accept a
single type argument instead of separate only and except
arguments.  For set/update/new/create, a value of :default is
used.  For set_all/update_all, a value of :all is used.  For
set_only/update_only, an array of allowed columns is used.

To make the blacklist_security implementation easier,
an uncached .get_setter_methods is added, and blacklist_security
just overrides that.  To handle the set_except/update_except
methods, an array subclass is used that is handled specially in
the overridden Model#setter_methods.

This simplifies quite a bit of the internal code.  The only
backwards incompatibility is in the private methods.
Make Database foreign_key/index/table/view parsing support checks use respond_to?

Now that the default implementations of the related methods have
been removed, respond_to? checks can be used to check for support.
This is far more robust, and much more friendly for external
adapters.
Remove unused code in Dataset#hash_key_symbol

Originally, I planned to use this to implement the auto-aliasing
for single arguments in get/select_map/select_order_map.  I ended
up using a different for that, and nothing uses this, so it should
be safe to remove.
Add some specs for better coverage

While where, switch some unnecessary qspecify calls to specify.
Update security guide after a couple code execution methods were removed
Fix bug in typecast_on_load after recent set_values refactoring

This was caused by a typo in the method name.  It wasn't caught
by the specs since the specs were buggy.
Fix :root=>true for json_serializer

It should imply :root=>:collection.  Add a spec for it. Remove
mention of :naked option while here, since it is now the default.
Don't send unnecessary query in pg_array extension

If there are no named types matched in the database, then there is
no reason to send a query to get array versions of those types.

While here, add some specs for named versions of types.
Add some specs for better coverage
Fix some pg_* extension specs that didn't run individually
Handle more disconnect errors when using the postgres adapter with the postgres-pr driver

Also, swallow an error that can occur when disconnecting.
Hex escape blob input on MySQL

This doesn't appear to be necessary on the MySQL side, but if you
mix utf-8 input strings and blobs in the same string on ruby 1.9+,
you can end up with encoding errors on the ruby side.  Hex encoding
the blobs can work around that, and doesn't appear to cause an harm
other than bloating the SQL string used.  Performance sensitive
code should be using prepared statements for large blob input
anyway, so that doesn't seem like a major downside.
Update and sort .gitignore

Ignore the spec_bin temporary files.  Remove the static presentation
ignores for the website, since they are just linked to now.  Remove
the .rvmrc ignore, since Sequel doesn't use one.

I'm considering removal of the 3 *. entries, but I'll leave them in
for now.
Handle spec_*cov tasks without a spec/rcov.opts file

The file currently exists in source control, but with some changes
it may not, so make sure it runs without the file.
Only include specific file extensions in gemspec

The previous gemspec was pretty loose, and I could see unexpected
files slipping in by accident.  Change things so that only
expected file extensions appear in the gem.
Note exception to general code order suggestion
Fix inconsistent indentation
Skip prepared statement usage in some additional cases in the prepared_statements_associations plugin

If the associated class has a filtered dataset, then unbinding it
may produce a prepared statement with a mismatched number of
placeholders, leading to in incorrect query.

Note that it is probably possible to handle such cases with
prepared statements, by comparing the unbound variables to the
association variables.
Use prepared statements when the association has :conditions in the prepared_statements_associations plugin

This tweaks the previous commit to compare the unbound variables
to the association variables, and bind any that are missing.  This
should allow safe prepared statement usage for associations with
conditions.

Note that this only works because conditions should not be able
to contain instance-specific code.  You can use a proc for conditions,
but then it is a virtual row block and doesn't have access to the
dataset.  Both the block form and the :dataset option allow for
instance-specific code, so prepared statements should not be used
for either of them.
Prepare one_to_one associations in the prepared_statements_associations plugin

I'm not sure why these were skipped when the plugin was originally
developed, but support is fairly trivial to add.