Attempt to prevent misleading exceptions on PostgreSQL

Certain error messages on PostgreSQL contain user input,
so it's possible for the user to control the exception
class generated.  The most common of these is probably
invalid input syntax, so just recognize anything
containing that as a plain DatabaseError.

Also, change the database_error_regexps description to
reflect that any enumerable is supported.  Hashes are
not ordered on ruby 1.8, so to enforce an order switch
the shared PostgreSQL adapter to use an array of pairs.