[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 remember some story about a counter in a linux kernel that was intentionally initialized to overflow soon to force everybody check for overflows (as that was already causing bugs in systems with very long uptime) (have not saved any references, but Google knows everything: http://stackoverflow.com/questions/24168642/why-are-jiffies-initialized-at-300000-5-minutes). `struct timespec` is not designed to overflow and there are no references that anybody should check for overflows, but we are using conversion to `uint64_t` and you cannot guarantee that `clock_gettime` will not return time a few hundred years off compared to uptime to force some other bugs to appear somewhere in the future.