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