Create CascadingClient for fallbacking clients

The intended use case is that a company (like Spotify) is going to
switch over from a slow HdfsClient to a much faster SnakebiteHdfsClient.
To avoid surprises if say the SnakebiteHdfsClient can't handle some
corner case, then a given fallback will be used.

Example instantiation:

    client = CascadingClient([SnakebiteHdfsClient(), HdfsClient()])
Merge pull request #395 from Tarrasch/chained-hdfs-client

Chainable hdfs-clients
Overhaul the hdfs client configuration

So the old syntax was something very hackish and very special-case oriented.

    [hdfs]
    use_snakebite: true

Now it becomes:

    [hdfs]
    client: snakebite

This patch also adds the configuration:

    [hdfs]
    client: snakebite_with_hadoopcli_fallback

This patch maintains backwards compatibility with old configuration.

This patch depend on spotify/luigi#395, so that must be merged before
this one.