Added possibility to throw specific exceptions at the adapter level

This aims to solve #224, by adding the possibility of throwing a specific `\RuntimeException` from the adapter level. This can be a simple wrapped exception, like implemented on the AwsS3 adapter:

```php
try {
    $this->service->putObject($options);
    return strlen($content);
} catch (\Exception $e) {
    throw new \RuntimeException('Could not put object on S3.', 0, $e);
}
```

Or a full subtype exception of the `\RuntimeException`.

If this PR makes sense to you, I'll change all of the other adapters.