Making vex::profiler a template

Current implementation of vex::stopwatch may have high overheads e.g.
when profiling is performed in a loop. This commit makes it possible to
choose between median and mean averaging.

Another change is that it is possible to select
std::chrono::high_resolution_clock instead of default
boost::chrono::high_resolution_clock.

Default behavior of profiler is left intact.