Each repository now has its own uploader

This means that to upload a package, you now do not need to instantiate
an Uploader object, but instead just need to call
Repository.upload(distribution) or Repository.register(distribution),
which will use the Repository's already-instantiated uploader.

In order to support this, Uploader has been modified so now distribution
is no longer an instance attribute, but instead a parameter passed to
both the upload and the register method, allowing the same Uploader
object to upload/register as many distribution objects as necessary.