Handle special characters in external filenames and merge certain objects.

 This addresses issue #52 but more remains to be done.

 * pyrseas/dbobject/__init__.py (DbObject.extern_filename): Add
   xfrm_filename function to do the filename transformations.
 * pyrseas/dbobject/cast.py (Cast.single_extern_file): New attribute.
   (CastDict.to_map): Append external file output.
 * pyrseas/dbobject/collation.py (Collation.single_extern_file): New
   attribute.
 * pyrseas/dbobject/conversion.py (Conversion.single_extern_file): New
   attribute.
 * pyrseas/dbobject/extension.py (Extension.single_extern_file): New
   attribute.  (ExtensionDict.to_map): Append external file output.
 * pyrseas/dbobject/foreign.py
   (ForeignDataWrapper.single_extern_file): New attribute.
   (ForeignDataWrapperDict.to_map): Append external file output.
 * pyrseas/dbobject/language.py (Language.single_extern_file): New
   attribute.  (LanguageDict.to_map): Append external file output.
 * pyrseas/dbobject/operator.py (Operator.single_extern_file): New
   attribute.
 * pyrseas/dbobject/operclass.py (OperatorClass.single_extern_file):
   New attribute.
 * pyrseas/dbobject/operfamily.py (OperatorFamily.single_extern_file):
   New attribute.
 * pyrseas/dbobject/schema.py (Schema.extern_dir): Use the basename
   from the extern_filename.  (Schema.to_map): Append external file
   output.
 * pyrseas/dbobject/textsearch.py ({TSConfiguration, TSDictionary,
   TSParser, TSTemplate}.single_extern_file: New attribute.
 * pyrseas/testutils.py (DatabaseToMapTestCase.to_map): Add directory
   argument. (DatabaseToMapTestCase.yaml_load): New method to load a
   test YAML file.
 * tests/dbobject/test_extern_file.py: Tests for new functionality.