Minor stylistic and code changes for consistency

The more significant changes are:
 * Removed underscore prefixes from variables in the CudaTimer class (variables with a leading underscore are reserved as global identifiers by some implementations)
 * Renamed these variables to be consistent across the timer implementations for Windows, OS X, and Linux
 * Floating-point constants typed
 * Made the messages reported in wbSolution() consistent with those in Coursera's implementation
Merge remote-tracking branch 'upstream/master'
Replaced the naive floating-point comparison test

The magnitude of the numbers is now taken into consideration (the previous comparison test fails for values with large exponents and for small values close to zero).

Note:
 * There are no checks made for overflow by division
 * The tolerance level is still arbitrarily chosen (0.005f)
Protect against division by zero during floating-point comparisons
Fixed memory leak in wbSolution()

Though the memory is host allocated, over several runs with large datasets, this leak seems to cause indeterminate errors in the CUDA runtime cudaMalloc() and cudaFree() functions and affect the CUBLAS library's ability to establish a context on OS X. This may be a CUDA driver error . . .
Reflowed wbSolution() to have only one point of exit
Corrected the formula for floating-point comparison in wbSolution() for MP2 & MP3

When copying the formula from wbSolution() for MP1, MP4 & MP5 I forgot to change the variables
Extracted floating-point comparison in wbSolution() to wbFPCloseEnough()

Implemented the floating-point comparison test using Knuth's 'close enough' algorithm. See Seminumerical Algorithms 3e, s. 4.2.4, pp. 213-225. Note that the tolerance level, e, is still arbitrarily chosen. Ideally, this value should scale std::numeric_limits<float>::epsilon() by the number of rounding operations.
Updated CMakeLists.txt so that executables link to the math library (-lm)
Inserted calls to cudaDeviceSynchronize() in the UNIX/POSIX timing routines