Refactor Transfer implementations into modules

The `Transfer::File` and `Transfer::OpenURI` implementations used be classes.
Now, they are modules. This allows a bunch of instance object code to be
dropped and paves the way for adding new transfer operations beyond `copy`.
Add a read method to the Transfer module

Added a new method, `Transfer.read`, that returns the content of a URI.
Add version_file attribute to global config

The `version_file` is a new attribute that specifies a path relative to
`download_root`. This path will be read and the contents used to populate
the `version` config value.
Add release attribute to global config

Release is currently a no-op attribute except for the fact that it is
substituted for any `:release` key in a `download_root`.
Add VersionedPath utility module

This module makes the path substitution logic used by `PEBuild::Archive`
available to other parts of the PEBuild codebase. Eventually, path substitution
should be consolidated into one place.