update CONTRIBUTING.md
Update CONTRIBUTING.md with current info

- Finish what @ashleyh started.
- Add section for Getting Started with Neovim.
- Add section for commit messages.
- Trim down on wording to keep it short.
replaced some mch_stat() with os_file_exists()
use os_getperm() in f_getfperm()
implemented os_file_get_size()
implemented FileInfo struct

This struct is a wrapper around `uv_stat_t` to hide the stat information
inside `src/os/`.
The stat file attribute will be private after all refactorings concerning
file informations are done.
replaced mch_fstat() with os_file_get_info_fd()
replaced some mch_stat() with os_get_file_info()
replaced some mch_lstat()
replaced mch_stat() in buffer.c
replaced last mch_stat() and mch_lstat()

files: memline.c and fileio.c
removed mch_lstat() and mch_stat() macros
Merge pull request #619 from stefan991/mch_stat-cleanup

Replace `struct stat` with `FileInfo`
remove unused parameter from `buf_store_file_info`
Simple Split 2-iter loop: msg_show_console_dialog

Simply spliting the 2-iter loop into code for computing
size of memory & for copying to allocated memory
Add new functions for memory alloction & data copy

From msg_show_console_dialog(), a new function was created
for memory allocation for hotkeys & dialog string.
Similarly, another function created for copying hotkeys
& dialog string.
Style corrections in the two new functions

Style changes in the two new function:
cpy_hotkeys_and_msg() & console_dialog_alloc()
Merge #688 'Refactoring of two-iteration anti-pattern in msg_show_console_dialog()'
Add --with-pic flag to msgpack configuration
Implement generic map on top of khash

Implement a generic string->pointer associative array on top of the khash macro
library, providing a nice API for simple hash table requirements. (khash gives
lot of control with a not-so-friendly API, which is unnecessary on most cases)