Lots and lots of little changes.

Some of the more important ones are:

 * Implement PosixPermissions.copy_to. POSIX mode bits are now copied by
   default by copy_to for local files.
 * Don't copy extended user attributes by default for now.
 * Don't delete existing extended attributes when we do copy them. I'm planning
   on adding a dedicated FileMimeType attribute set for URL's benefit; this
   will back itself with the user.mime_type extended attribute on Linux, and
   having ExtendedAttributes overwrite existing attributes would steamroller
   over that.
 * Permit FileSystem.mountpoints and BaseFile.mountpoint to be None when the
   underlying file system doesn't support such a notion (like URLFileSystem)
 * Fix logic in copy_to and copy_into to correctly work with attributes
 * Catch all exceptions when trying to delete each individual file in
   delete_on_exit's atexit handler
 * add LocalFileSystem.cache and the class of its return value, LocalCache.
   This method and class make it easy to cache remote files locally and
   automatically clean up the temporary copies after they're no longer needed.
   As soon as FileSystem and its implementations gain proper support for
   temporary directories, I'll make this a subclass of another abstract class,
   Cache.
 * Add URL.child_of, a static method that interprets a path relative to a given
   BaseFile instance unless it looks like a URL or an absolute path, in which
   case a URL instance or a File instance, respectively, will be returned.
 * Alias File to LocalFile in preparation for the eventual renaming of File to
   LocalFile.
 * Add SSHFile.url. (I still need to add url to BaseFile; that'll happen
   later.)
 * Always create the URL class, even if the requests module is missing. Rely on
 * tracebacks when the user actually tries to use URL to make it clearer to
   them what's going on.