[WIP/RFC] Add unit tests for buffer.c and fileio.c

> Is there actually a good reason why NameBuff isn't statically allocated like IOBuff and msg_buf? 

After looking into this I'm fairly confident that the primary reason Vim wasn't statically allocating NameBuff is to avoid having to change the signature of `gen_expand_wildcards()`. I'm not even sure it was OOM-related as I first thought.

c faq: "An array reference is not a pointer": http://c-faq.com/aryptr/aryptr2.html , http://c-faq.com/aryptr/aryvsadr.html

> (lldb) expr (void)printf("%p %p\n", NameBuff, &NameBuff);
> 0x100291710 0x100291710

Doesn't this just illustrate the fact that ["array references decay into pointers"](http://c-faq.com/aryptr/aryvsadr.html)?

I think at this point our options are: (1) change the signature of `gen_expand_wildcards`, (2) leave NameBuff as a dynamic allocation to avoid insane array semantics, or (3) use @war1025 approach (nicely done). All the options feel a bit dirty to me because they leave some WTFs scattered in the codebase for future readers :)