Refactor to prepare for supporting duplicate gcno files.

* I thought it was strange that ```coverage_file_class``` for ```SimpleOutput``` returned ```Slather::CoverallsCoverageFile```. It now returns ```Slather::CoverageFile```.
* Moved some coverage calculation into ```CoverageFile``` so we can use it to get rid of duplicate coverage files (#13). If someone wanted to add another coverage service, it's probably useful to have this info too instead of limiting it to ```SimpleOutput```

:warning: This is my first real-ish Ruby PR. Please review throughly. (I did run ```rspec``` and added some tests.) :octopus: