Make cache storage pluggable

Refs #461

This pull request introduces abstraction to cache storage strategy and makes it selectable via configuration, thus making it safe to use CarrierWave in a multi-application-server environment(e.g. multiple dyno configuration in Heroku).

You can enable this feature either globally:
```ruby
CarrierWave.configure do |config|
  config.cache_storage = :fog # default is :file
  config.storage = :fog
end
```
or per-model basis:

```ruby
class AvatarUploader < CarrierWave::Uploader::Base
  cache_storage :fog
  storage :fog
end
```

Any suggestions will be greatly appreciated.

Thanks for publishing and maintaining this awesome gem!!