startuptime: move code to profile.{c,h} + doc

It's a better place to put it. Also slightly documented and reformatted, but
not changed.
startuptime: implement on top of profiling fns

Reuse the profiling functions to implement the startuptime functions.
Decreases our dependency on `gettimeofday()` and thus gets us a little bit
closer to a clean port to Windows.
garray: add necessary includes

The upcoming decoupling of vim.h and globals.h needs this to compile.
globals.h: decouple vim.h and globals.h

Allow globals.h to be included without including vim.h. Another small piece
of the puzzle of dismantling vim.h.

Moving some extra `#define`'s to globals.h is no better than having them in
vim.h. We should, in a later PR, move them to the file where they belong or
to a separate `constants.h` or something.
startuptime: always enable startuptime

Removes the STARTUPTIME define.
startuptime: print vim -> nvim
Merge #962 'Implement startuptime functions on top of profiling functions'