Refactoring of NetAsyncDownloader and ModuleInstaller

- All the scary thread things happen in NetAsyncDownloader
- We just download things now; we don't have to prepare then start.
- `DownloadModules` makes sure we don't double-download files and cache them.
- Better (but not yet best) clean-up of temporary files.
- Exceptions are now actually thrown if things go wrong.
- GUI error dialogs also log to log4net
- Fun new krakens to play with!
- Moar documentation for everyone!

Note: It's no longer possible to cancellation installation of modules once they've finished downloading.

Manually tested with both cmdline and GUI client.

Includes #301