Move coverage script to Makefile

Also includes some cleanup of unnecessary files in .gitignore which should belong
in a global .gitignore.
This shouldn't be needed either. If that's needed it means that tests are failing/are badly written.