This function almost writes itself. I need a thin layer to handle the file IO errors and report them appropriately, and then all the magic is a pass-through of the existing read_conf_str. I've made basic unit tests for the most obvious scenarios. The test for missing-file behavior is incomplete because I need to create a new error variant.