Add timer class.

This can help remove reliance on some boost libraries (which can be hard
to compile on, for example, an Intel Phi.  It also allows us to
eventually adjust the timer depending on the device adapter being used.
Add a synchronization primitive to device adapter algorithms.

Used in the timer to make sure measurements capture all asynchronous
execution.

Not implemented in all device adapters yet.
Add synchronize function and specialized timer for TBB.
Be a bit more lenient on timer test.

I saw a test fail because the timer was a few ticks short of a full
second of wait time.  I don't think this matters for any practical
purpose.
Add synchronization and custom timer for OpenMP device.
Add synchronization and custom timer for CUDA device.
Fix dependence issue of Timer.

Instead of having each device adapter try to override the template
dax::cont::Timer (which itself depends on the device adapter algorithm),
create a different implementation class
dax::cont::internal::DeviceAdapterTimerImplementation and have
dax::cont::Timer delegate all of its calls there.
Remove dependence on Boost timer.

We now have our own internal timer.
Merge branch 'BuiltInTimer'