fileinfo: implement os_fileinfo_size

this replaces os_get_file_size and file_info.stat.st_size
fileinfo: implement os_fileinfo_hardlinks
fileinfo: implement os_fileinfo_blocksize
fileinfo: rename os_get_file_info{,_link,_fd}
fileinfo: rename os_file_info_id_equal
fileinfo: rename os_file_info_get_id
fileinfo: rename os_file_info_get_inode
fileid: rename os_get_file_id
fileid: rename os_file_id_equal
fileid: rename os_file_id_equal_file_info
fileinfo: change returntype of os_fileinfo_size

off_t -> uint64_t
Merge pull request #1054 from stefan991/fileinfo-getter

FileInfo getters for `filesize`, `hardlinks` and `blocksize`
memory: memcnt and strcnt.
memory: xstrchrnul and xmemscan.
memory: memchrsub and strchrsub
vim-patch:7.4.242

Problem:    getreg() does not distinguish between a NL used for a line
            break and a NL used for a NUL character.
Solution:   Add another argument to return a list. (ZyX)

https://code.google.com/p/vim/source/detail?r=v7-4-242
Add vroom test for getreg.
Return void * from get_reg_contents.
vim-patch:7.4.243

Problem:    Cannot use setreg() to add text that includes a NUL.
Solution:   Make setreg() accept a list.

https://code.google.com/p/vim/source/detail?r=v7-4-243
Refactor str_to_reg().

- Update the doxygen comments.
- Use more descriptive types.
- Localize variables.
- Find the '\n' with memchr instead of a for loop.
- Remove `if (size)` checks before memmove
  since memmove(dst,src,0) is a noop.
- Use memcpy instead since the pointers don't alias.
- Use xmemdupz instead of vim_strnsave.
- xrealloc instead of xmalloc/memcpy.
- Use memcnt/xmemscan/memchrsub.