Make gendeclarations.lua more friendly to incremental builds

Modify gendeclarations.lua to check if the generated non-static declaration
header changed before rewriting it with a new version. This is to prevent
unnecessary rebuilds of modules that depend on modules that had private changes.
Merge branch 'make-gendeclarations-friendly-to-incremental-builds'
Fix diagrams in ex_cmds.c #798
vim-patch:7.4.277

Problem:    Using ":sign unplace *" may leave the cursor in the wrong position
            (Christian Brabandt)
Solution:   Update the cursor position when removing all signs.

https://code.google.com/p/vim/source/detail?r=373204662d82e894b27ee76bc3319bc62c91f6ae
Merge #744 'vim-patch:7.4.277'
vim-patch:7.4.275

Problem:  When changing the type of a sign that hasn't been
          placed ther is no error message.
Solution: Add an error message. (Christian Brabandt)

Author: Bram Moolenaar

https://code.google.com/p/vim/source/detail?r=8a3117a4887c1e12a1165c9719491f96753
Merge #738 'vim-patch:7.4.275'
FileID: implement `FileID` struct

`FileID` should encapsulate `st_dev` and `st_ino`. It is a new abstraction
used to check if two files are the same. `FileID`s will be embeded inside
other struts like `buf_t` or `ff_visited_T`, where a full `FileInfo` would be
to big.
FileID: remove `INVALID_DEVICE_ID` macro
FileID: refactor buffer.c to use `FileID`
FileID: refactor ex_cmds2.c to use `FileID`
FileID: refactor file_search.c to use `FileID`
FileID: refactor if_cscope.c to use `FileID`
FileID: refactor path.c to use `FileID`
FileID: refactor os_unix.c to use `FileID`
FileID: make `os_stat()` static
FileID: remove last use of `st_ino` in memline.c

* FileID can’t be used in memline.c, because the block0 is defined to
use only a 32bit ino.
* implemented `os_file_info_get_inode`
* deprecated `os_file_info_get_inode
FileID: remove `CHECK_INODE` macro