[RFC] Added missing #define guards in headers

While playing with [include-what-you-use](https://code.google.com/p/include-what-you-use/) proposed by @aktau in #549, I noticed that not all headers contain the ```#define guards```.
I added guards to all except ```ex_cmds_defs.h``` because
```cpp
/*
 * This file defines the Ex commands.
 * When DO_DECLARE_EXCMD is defined, the table with ex command names and
 * options results.
 * When DO_DECLARE_EXCMD is NOT defined, the enum with all the Ex commands
 * results.
 * This clever trick was invented by Ron Aaron.
 */
```
And if I add guard to that file then compilation fails. This "clever trick" looks to me like "ugly hack", but I don't know how to avoid it in the simple way.