[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'm still debating about removing it (the function) and putting uv_hrtime behind os_hrtime and just calling it directly. What do you think?

You mean remove `profile_start`? If I'm not mistaken it is the interface for the `:profile start` VimL command. Also the calls to `profile_*` in eval.c, etc, at least make the code easier to follow.

But I also I think we should have a `os_hrtime` function, rather than including `uv.h` directly in modules outside of `os/`.