refactor network classes to be more clear

* DownloadResponseListener -> ServerResponseListener as it serves simply
as a success/fail response from a server, not necessarily just for
downloading.
* URLDownloader -> StringDownloader since you are downloading strings,
not a url.
First implementation of async imgur api

The MultiUploader tool is broken as of this commit. It's model doesn't
work well with the new async imgur api. It will be rewritten before this
branch gets merged back to master.

* Created ImgurResponseListener to be implemented by anyone who wishes
to receive notifications when an image upload finishes successfully or
fails
* Refactor ImgurUploader to be a wrapper over SimpleFileUploader
* Refactor HTTPFileUploader to be package-private as it shouldn't be
used directly outside of the upload package
* Created SimpleFileUploader to be a wrapper over the HTTPFileUploader
for generic file uploading to any server that implements the same api as
imgur for image uploads. This still needs to be refactored in to
something more general.
* Created corresponding UploadException and UploadListener for the
SimpleFileUploader

* Refactored AnimatedTrayIcon to have a static factory creation method
* Moved various paths to the global Config file

* Refactored Upload to use the new ImgurUploader