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: 
I'd just put this all on one line, `self.coverage_data.compact.count`. Also, you removing the `self` would be more idiomatic in Ruby (it's implied if you remove it).

Also, because of that implied `self`, I usually try to avoid reusing method names as local variable names (ie, `coverage_data`) because it can get confusing.