makefile: add support for passing extra flags to C/C++ compiles

This allows us to provide specific flags to specific groups of
files being compiled.  This is very useful for selectively
enabling/disabling options on groups of files.
makefile: add template for generating gcov reports
unittest: use EXTRA_FLAGS for building gtest library
unittest: add _gcov target for building gcov reports for unit tests

gcov reports are found in ./build/unit_tests/<test>/*.c.gcov
sim: enable gcov data collection for sim build
makefile: add order-only prereqs for gcov targets for parallel builds
Merge pull request #728 from solidgoldbomb/run-gcov-on-ut

Run gcov code coverage tool on unit tests (and sim)