[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
Btw, I just thought to myself that there's perhaps no need for an overflow check here, as the result will be good anyway (unsigned wraparound):

```c
#include <stdio.h>
#include <string.h>
#include <stdint.h>

int main()
{
    uint64_t i = 1ULL << 63;
    uint64_t max = UINT64_MAX;
    uint64_t now = 2ULL;
    printf("%zu (now) - %zu (2^63) = %zu\n", now, i, now - i);
    printf("%zu (now) - %zu (2^64 - 1) = %zu", now, max, now - max);
    return 0;
}
```

output:

```
2 (now) - 9223372036854775808 (2^63) = 9223372036854775810
2 (now) - 18446744073709551615 (2^64 - 1) = 3
```