[RFC] viml: impl profiling on top of uv_hrtime()

Should be better than gettimeofday() since libuv uses higher resolution
clocks on most UNIX platforms. Libuv also tries to use monotonic clocks,
kernel bugs notwithstanding.

Necessary for Windows, which doesn't have gettimeofday().

Relevant issue: #831

References for `STATIC_ASSERT`:
- http://www.pixelbeat.org/programming/gcc/static_assert.html
- http://comments.gmane.org/gmane.comp.lib.gnulib.bugs/25870
- https://github.com/gagern/gnulib/blob/master/lib/verify.h
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407

**UPDATE**: Since we now have a platform abstract `uint64_t` type (`proftime_T`) instead of `LARGE_INTEGER` and `struct timeval`, I'm thinking of passing by value and perhaps even eliminating some of the one-line functions.

Ping: @justinmk @ZyX-I @equalsraf
I think it is good idea to get rid of `long` here: it is guaranteed to have only 32 bits, while we need 64. If it is 32 bit than `msec * 1000000L` will overflow if you set timeout in `search()` to slightly more then 2 seconds.