Cleanup the Makefile

Some more cleanup by making SharpBench.dll an explicit target and
removing the legacy removal of different versions.
Improve documentation

Add documentation of timing and sampling env variables
Make benchmark more robust on system with low resolution timing

On Windows the timer seems to have a low resolution, which causes the
computation of the elapsed time to be a 0. Always assume that at least
0.1 nanoseconds have passed and protect from NaN in the log function
by doing exactly one iteration in that case.