Fix unsafe use of CString::with_ref
Sometimes the C string would get freed before XOpenDisplay was done with it, producing a garbage display string and a null Display*. Also switch to with_c_str because it will stack-allocate for the common case of small strings (doesn't really matter here, but why not).