FilesPipeline extracted and separated from ImagesPipeline

- ImagesPipeline interface has not changes
- ImagesPipeline has been built on top of FilesPipeline
- tests for FilesPipeline and ImagesPipeline has been separated
- new tests for FilesPipeline: file_key generation and file expiration testing

FilesPipeline functionality is: 
- file downloading
- minimize network transfers and file processing, doing stat of the files and determining if file is new, uptodate or expired.

ImagesPipeline functionality is:
- converting images to JPG
- image thumbnail generation logic