Fix/s3 input/output with codec

This PRs includes a lot of changes.

- Merged @jsvd documentation improvement and added more documentation on new attributes Fix: #1340 
- Ruby code cleanup, following the STYLE.md
- It now use the aws_config mixing support IAM roles fix #1778 fix #1575
- the plugin also use standard codec, added a new codec s3_plain to support previous version
- refactoring of the code to improve clarity and allow easier testing
- Created initial test suite for it.
- added simple tests to the aws_config mixin
- Fixed a bug causing events to be dropped when using the size_file option and the file rotation.
- Fixed a bug when the tags were nil in the plain text format. fix #1626
- Fixed a bug when specifying the file_size, the doc says KB but the condition was on bytes.
- Added the option to specify a temporary_directory for the working files. fix #1860
- Cloudfront is now a codec fix #1630
- Gzip decode is now a codec initial work for #1895
- S3 output issue when working with multiple workers added a threaded uploader fix  #1915 
- S3 output: when the codec is started it will try to create a simple file on your bucket to test the permissions fix #1914

cc @electrical