Fix some remaining memory management problems after the c_string reimplementation.

The advertised interface to chpl_fs_cwd had not been updated to return a c_string_copy.
The low-level implementation returns an malloc'd string, so this is the right choice.

There was a coding error in getPath.  I had a call to chpl_free_c_string on the main value
after converting its type to use the "stealing" version of toString().  This violates the
coding convention associated with c_string_copies, and also (not coincidentally) resulted
in a premature free.

There was a long-standing error in qio_file_path_for_fd, where a call to qio_strdup was
left out for the LINUX case.  This would result in premature frees, but was only exercised
by the two test cases freadIntFailed and fwriteIntFailed.  Because MM error are
unpredictable, these test cases passed most of the time, but my change to the c_string
interface made them fail reliably.  The added call to qio_strdup() should fix these test
cases permanently.

I also added some comments regarding the MM responsibilities of callers of low-level
functions that return an allocated string.