Merge file writing into Measurements class

Using a sepearate class solely for writing a file seems a bit overkill,
thus merge the relevant functionality of the ResultWriter class into
Measurements, dropping the ResultWriter completely. Also, change the
output formatting in a bit more reliable way and change the
configuration variables to not make use of the preprocessor.
Unify different main functions

Unify the time measuring and the unit tests in the new
fibonacci_main.cpp file, solving the problem of multiple main functions.
This program takes either a command-line argument or a user input to
choose between these functionalities. Make the file containing the unit
tests a header file which can be included in and used by the program.
Modify the Makefile to be able to call either function directly,
modifying the tests target and adding a new one (measurements).
Generalize IntegerMatrix class

Change the IntegerMatrix class to be generic, renaming it to Matrix,
and change the logarithmic time implementation to use this one instead.
This might be useful later as we may switch the return type of the
fibonacci algorithms to compute larger numbers.
Improve measurement precision

Modify the ClockUtility to return its results in nanoseconds. Extend the
Measurements class to convert them into microseconds and round by a
predefined precision. Also add a configurable option to iterate
individual measurements and use the average as the result. This may be
useful if the data returned by the clock turns out to be too imprecise.
Add CPU cycle measuring

Implement function to measure the CPU cycles of the given function and
write the results to a file. This function uses assembly code which
should work on common Intel and AMD processors. Modify the Measurements
class to perform either measurement and make the functionality accessible
through the main function.