Do strict typecasting of decimal columns by default, similar to integer/float typecasting

For many years, Sequel has been strict in regards to integer/float
typecasting.  This has been easy to Integer/Float methods are
strict by default.  Ruby does not offer a strict BigDecimal method,
so decimal typecasting has always been loose unintentionally.
This makes decimal typecasting strict by checking for validity using
the strict Float method if the decimal is zero (the value used for
invalid input values).  Benchmarking determines that this is faster
in the valid case that always using Float to verify.

For users who want loose typecasting, update the looser typecasting
plugin to not do the Float check.  I can't imagine the previous
behavior of strict integer/float, loose decimal is desired by
anyone, so there is no setting to get it back.

While here, refactor the looser_typecasting specs to be more clear
as to their purpose.
Make rake package task work with new rubygems

Also, make sure the gem related tasks use the same version of ruby
as the one running rake.
Fix Database#connect RDoc in mysql2 adapter (Fixes #626)

The RDoc was apparently just copied from the mysql adapter, and is
wrong since mysql2 and mysql adapters do not support the same
options.  Since mysql2 takes an options hash directly, and Sequel
passes the options hash to mysql2, just note that.
Implemented drop_foreign_key.
Make foreign_key_name raise unless unique matching key is found.
Handle infinite dates in the postgres adapter using Database#convert_infinite_timestamps

Sequel has handled infinite timestamps for quite a while, but as
PostgreSQL supports infinite dates as well, we should probably
support that.

Previously, infinite dates were either changed into 0000-01-01 if
using the default conversion proc, or an error would be raised if
sequel_pg was in use.
Handle drop_constraint :type=>:primary_key on H2

H2 doesn't seem to allowing dropping primary key constraints by
name, it requires the :type=>:primary_key option to know it is
a primary key.
Allow creation named column constraints via :*_constraint_name column options

Previously, Sequel only allowed naming table constraints,
not column constraints.  However, this made it easy to create
constraints without knowing their names, which led to difficulty
dropping the constraints later.  This change adds the
:primary_key_constraint_name, :foreign_key_constraint_name,
and :unique_constraint_name column options to give names to
the constraints.

Unfortunately, not all databases support named column constraints.
In the interests of portability, those that don't (MySQL, H2,
CUBRID) have the column constraints converted to table constraints.

MySQL has problems dropping a primary key constraint on an
autoincrementing column, so when dropping a primary key constraint,
also drop the related auto incrementing.
Make add_foreign_key() reversible.
Added spec tests.
Fix bug in string stripper plugin's set_dataset (Fixes #629)
Merge raxoft's drop_foreign_key commit
Merge the drop_foreign_key alter_table generator method

Add and modify specs to cover the foreign_key_name method.

Update related documentation.

Make SQLite handle drop_foreign_key by only dropping the
related foreign key constraint instead of all foreign keys
contraints.
Fix example code in schema modification guide
Fix typo.
Unbreak jdbc/as400 adapter after switch to standard offset emulation (Fixes #633)
Have associations, composition, serialization, and dirty plugins clear caches in some additional cases

Previously, if the model's dataset supported insert_select, the
caches used by the associations, composition, serialization, and
dirty plugins would not be cleared when saving new records.  Also,
if set_values was used directly, the cache would not be cleared.

This makes it so that set_values clears the cache, and since all
types of refreshes run through set_values, this handles the cases
without other problems.

One issue with this is that set_values is called when creating
model instances.  As such, this has a performance hit when
creating new instances.  This makes Model.call significantly slower,
but actually usage with a database is only about 3% slower when
fetching large numbers of records, which I consider acceptable.
Make validates_type handle false values correctly (Fixes #636)
Add security guide

This gives a basic overview of security issues when using Sequel,
and how to avoid potential vulnerabilities.  Still a bit rough,
but I'm committing it early in hopes of refining it after some
feedback.
Avoid creating symbols in the pretty_table extension

There doesn't seem to be a reason to convert to symbols here.