Add lots of new functions to key_name.py, including path/link_name processing.
Copy various link_name related regex patterns to key_name.py and use them.
Add error checking that raises a key_name.Error exception when name...()
functions are given empty arguments. Hard-code class names, since they match
what was typed into the module.class.__name__ to get the name anyway. This
eliminates dependencies on any modules by key_name.py.
Third-party code that is *not* part of the application image (the Google App
Engine SDK in trunk/thirdparty/google_appengine, for example) belongs in
trunk/thirdparty. For third-party code that *is* part of the application
image, see the notes in trunk/app/README.
== THIRD PARTY LICENSES ==
Third-party code must also include a license text file, named LICENSE or
COPYING, in the package subdirectory. If the third-party package subdirectory
is maintained automatically with a tool such as svn_load_dirs.pl (which
removes files, such as license text files, that were added later to the
"target" directory), place the license text file in the trunk/app directory
and add the package name as a suffix.