Raise an exception on GCOV errors

If GCOV fails during execution raise the exception GcovError.  It will contain
an error message and the filename that was being processed when the error occured.
Resolve style errors

Fixes the style errors in the gcovr script itself.  Also removes code
duplication in the form of a reimplementation of os.walk.
Resolve remaining style errors

Fixes the remaining style errors in the gcovr sources.
Extract function find_gcov_files

Extracted the function "find_gcov_files" from the massive "process_datafile" function.
Extract function find_potential_wd

Extracts the function "find_potential_wd" from the (now less) massive function
"process_datafile".
Extract class Gcov

Move all functionality related to gcov execution into the class "Gcov".  The
function "process_datafile" is now starting to look decent.
Extract class from process_gcov_data

Extracted class "GcovParser" from GCOV parser code.  Redesigned to use
re.Scanner which is somewhat nicer than a bunch or if/else statements.  It
still needs some work before I would call the parser acceptable.
html: Leverage jinja2

Split head and footer from the pages and start to shape up the layout a
little.