Bracket structs in macros to avoid side effects in
operator precedence. e.g:
&foo->bar->baz != (&foo->bar)->baz
Renamed fdcat <-> fdncat, fcat <-> fncat
Implemented StringBuffer_vsprintf.
Fixed StringBuffer_vsprintf implementation.
Refactored string header:
* sort macros
* replaced 'catn' with 'cat'
Moved StringBuffer method definitions/macros to separate header.
Refactored string library.
String should be initialized '\0' terminated.
Always terminate string in StringBuffer with '\0'.