Add support for PG 9.1 extensions.

 * docs/extension.rst:  New page to document extensions.
 * docs/index.rst: Add extension.rst.
 * pyrseas/database.py (Database.Dicts.__init__): Add dictionary for
   extensions.  (Database.link_refs): Add extensions argument to
   schemas.link_refs call.  (Database._trim_objects): Add extensions
   to list of object types.  (Database.diff_map): Add calls to
   extensions.diff_map and extensions._drop.
 * pyrseas/dbobject/dbtype.py (TypeDict.query): Exclude types
   dependent on extensions.
 * pyrseas/dbobject/extension.py: New module to implement extensions.
 * pyrseas/dbobject/function.py (ProcDict.query): Exclude procedures
   dependent on extensions.
 * pyrseas/dbobject/language.py (LanguageDict.query): Exclude
   languages dependent on extensions.  (LanguageDict.link_refs):
   Special case code for plpgsql.
 * pyrseas/dbobject/operator.py (OperatorDict.query): Exclude
   operators dependent on extensions.
 * pyrseas/dbobject/operclass.py (OperatorClassDict.query): Exclude
   operator classes dependent on extensions.
 * pyrseas/dbobject/operfamily.py (OperatorFamilyDict.query): Exclude
   operator families dependent on extensions.
 * pyrseas/dbobject/schema.py (Schema.to_map): Add extensions to list
   of object types.  (SchemaDict.query): Allow pg_catalog to be
   fetched (for language extensions).  (SchemaDict.from_map): Process
   input extensions.  (SchemaDict.link_refs): Add argument for
   extensions.  (SchemaDict.diff_map): Prevent dropping of pg_catalog
   schema.
 * pyrseas/testutils.py (PostgresDb.clear): Drop existing extensions.
   (InputMapToSqlTestCase.std_map): For 9.1, add PL/pgSQL as an
   extension.
 * tests/dbobject/__init__.py: Invoke extension tests.
 * tests/dbobject/test_extension.py: New test module.
 * tests/dbobject/test_language.py: Don't run tests under PG 9.1.
 * tests/dbobject/test_schema.py (SchemaToSqlTestCase): Use std_map to
   build maps.
 * tests/dbobject/test_table.py
   (TableToSqlTestCase.test_create_table_within_schema): Use std_map
   to build maps.
dbtoyaml: do not monkey patch sys module
yamltodb: do not monkey patch sys module
dbtoyaml: typo
In yamltodb, exit with status 2 if statements were output.

 * docs/yamltodb.rst: Document exit statuses.  Add paragraph about use
   of status 0 for verifying no changes were made.  Reformat some
   options for clarity.
 * pyrseas/yamltodb.py: If statements were output, exit with status 2.
Support MATCH attributes for foreign keys. Fixes #34.

 * pyrseas/dbobject/constraint.py (ForeignKey.add): Add MATCH spec.
   (ConstraintDict.query): Retrieve pg_constraint.confmatchtype.
   (ConstraintDict._from_catalog): Transform match types.
   (ConstraintDict.from_map): Check and save match specs.
 * tests/dbobject/test_constraint.py: Two new tests to verify MATCH
   attributes.
Back out change 38772f2, i.e., exit yamltodb with 0 if statements generated.

  Exiting yamltodb with 2 (or 1) prevents it from being used easily in
  automated deployment.
Properly support index functions/expressions.  Fixes #3.

 * pyrseas/dbobject/index.py (Index.key_columns): Rename to
   key_expressions and replace self.columns by self.keys.
   (Index.create): Call key_expressions() always.  (IndexDict.query):
   Rename expression to keyexprs.  (IndexDict._from_catalog): Parse
   the key expressions and index definition to properly deal with the
   various specifications.  (IndexDict.from_map): Accept 'keys' or
   'columns' but not 'expression'.
 * tests/dbobject/test_index.py (IndexToMapTestCase): Change 'columns'
   to 'keys'. Add new tests test_index_function_multi and
   test_index_mixed.  (IndexToSqlTestCase): Change 'columns' to
   'keys'.  Add new tests test_add_index_back_compat and
   test_index_mixed.
Add support for TABLESPACEs for tables, primary keys and indexes.

 * pyrseas/dbobject/constraint.py (Constraint.add): Add USING INDEX
   TABLESPACE clause.  (ConstraintDict.query): Fetch
   pg_tablespace.spcname.  (ConstraintDict.from_map): Allow tablespace
   attribute in input map for primary keys and unique constraints.
 * pyrseas/dbobject/index.py (Index.create): Add TABLESPACE clause.
   (Index.diff_map): Handle changes to index tablespaces.
   (IndexDict.query): Fetch pg_tablespace.spcname.
   (IndexDict.from_map): Allow tablespace attribute in input map.
 * pyrseas/dbobject/table.py (Table.to_map): Output tablespace if
   present.  (Table.create): Add TABLESPACE clause.  (Table.diff_map):
   Handle tablespace changes.  (ClassDict.query): Fetch
   pg_tablespace.spcname.  (ClassDict.from_map): Allow tablespace in
   input map for tables.
 * tests/dbobject/__init__.py: Invoke test_tablespace.
 * tests/dbobject/test_tablespace.py: Tests for new functionality.
In UserMappingDict, use pg_user_mappings instead of pg_user_mapping. Fixes #35.
dbtoyaml.py, yamltodb.py: set pswd to None as default so that libpq could use PGPASSWORD env.
dbtoyaml.py, yamltodb.py: give PGUSER precedence over USER environment variable.
Add basic support for collations.

 * docs/collation.rst: New page to document collations.
 * docs/index.rst: Add collation.rst.
 * pyrseas/database.py (Database.Dicts.__init__): Add dictionary for
   collations.  (Database.link_refs): Add collations argument to
   schemas.link_refs call.  (Database._trim_objects): Add collations.
   (Database.diff_map): Call collations.diff_map.
 * pyrseas/dbobject/collation.py: New module to implement collations.
 * pyrseas/dbobject/schema.py (Schema.to_map): Process collations.
   (SchemaDict.from_map): Process input collations.
   (SchemaDict.link_refs): Add argument for collations.
 * pyrseas/testutils.py (PostgresDb.clear): Drop existing collations.
 * tests/dbobject/__init__.py: Invoke collation tests.
 * tests/dbobject/test_collation.py: New test module.
Prevent querying pg_collation prior to PG 9.1.
Don't output the pg_catalog schema unless it has more than a description.
Support enums with no labels.  Fixes #31.
Add note in docs/install.rst about FreeBSD pip install issue.

  Also, update versions tested for PG and Python, and update AUTHORS file.
Correct column drop/add case in middle of table. Fixes #8.

 * pyrseas/dbobject/table.py (Table.diff_map): Reorganize input column
   loop to ensure proper handling of test case.
 * tests/dbobject/test_column.py: In test_add_column2, modify test to
   drop middle column and add assertion to ensure only one statement
   is output.