MORE display buffers (squash not fixup)

A struct display_buffer describes a string buffer and the current position
within it so that a string can be built of various components. This is
especially useful for nested display functions for data types, where
the top level display function may call display functions for sub-data types.

While building a complex string, users SHOULD check the return value from
each display function and exit if it is <= 0, however, continuing to call
display functions will be totally safe.

The only things that MUST be done if building a new display primitive is
to call display_start at the beginning and display_finish at the end. A
display primitive is a function that uses a non-display function (such as
strcat, memcpy, sprintf) to copy bytes into the buffer. Such primitives must
assure that any such routines do not overflow the buffer, and then the
primitive must manage the b_current. display_finish will handle proper
indication of a full buffer or buffer overflow.

The core routines:

display_start validate and prepare to start appending to the buffer.
display_finish wrap up after appending to the buffer.
display_reset_buffer reset a buffer for re-use to build a new string.
display_printf append to the string using printf formatting
display_opaque_value format an opaque value into the buffer
display_cat append a simple string to the buffer

Additional documentation may be found in the Doxygen comments within
the source.

Signed-off-by: Frank Filz <ffilz@us.ibm.com>
MORE rest of SAL

Signed-off-by: Frank S. Filz <ffilz@us.ibm.com>
MORE configurable log fields

Signed-off-by: Frank S. Filz <ffilz@us.ibm.com>
MORE add FILE_NAME and LINE_NUM

Signed-off-by: Frank S. Filz <ffilz@us.ibm.com>
MORE Change from log dest per component to global log dest

Signed-off-by: Frank S. Filz <ffilz@us.ibm.com>