Make HTML file name generation more robust

Use os.path.splitext() to simplify the code and handle directories with dots.
Handle Windows paths in .gcov files properly

When creating the HTML coverage file names, convert the Windows path separators
backslash and colon to underscore in addition to the Unix slash character.