Add downloaders module

This module provides the interfaces to the external downloaders (curl,
…) and our own native downloader.

The class structure is deliberately very simple:
A downloader is a class that extends `downloaders.Downloader`.
The only thing that it should implement is a `_start_download` method
that has as arguments the url to download and the target file.
Add ExternalDownloader class

Every external downloader (wget,  …) should subclass
`downloaders.ExternalDownloader` and implement the `_create_command`
method.

The `coursera_dl.make_cookie_values` function has been removed.
Add wget downloader
Add curl donwloader
Add aria2 downloader
Add axel downloader
Add native downloader
Add downloader factory

Use the `coursera_dl.get_downloader` factory to choose which type of
downloader to use.

Remove the old downloading code.
Better error message when wrong bin is given

Instead of the 'OSError: [Errno 2] No such file or directory.' error,
try to explain why the error did occur.
Add test that checks if the error is raised.
PEP8: W391 blank line at end of file

Probably slipped it during rebase
Make cookie handling in the external downloaders more robust

Extact the cookies from the requests session instead of relying on a
static dict.
Merge pull request #126 from jonasdt/refactor_downloading

Merge pull from Jonas to refactor the selection of downloader backend.