Add mutexes to some functions that return pointers to static variables

br_about, br_version, and br_sdk_path return pointers to static memory declared
at function scope, that is intialized once and never changed.

In versions of visual studio (prior to 2013 apparently), this initialization is
not thread safe (thread safety of this operation is in c++-11).

Removed references to managed_return_value in the documentation of these
methods. The memory returned here is not invalidated by subsequent calls to the
function, so that comment does not apply.
Update several c-api functions to take string buffers as input

Instead of returning references to static memory (which are invalidated by
subsequent or concurrent calls to the function), require users to input string
buffers to functions that return strings.

Affected functions:
br_get_filename
br_get_metadata_string
br_scratch_path
br_objects
br_most_recent_message

In some GUI functions, use C++ functions instead of going through the c api
add a c++ method correspondign to br_objects (which returns a stringlist
instead of merging the lines)

br_read_pipe and br_get_header also use static memory in a similar way, but
are not addressed in this commit.
Put buffer and buffer_length at beginning of args for consistency (and so we can use *args for the rest in python)
Update brpy with string_management changes to C API and make string functions more Pythonic
Merge pull request #164 from biometrics/string_management

Updates to the c API to handle returning strings more safely