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).
Check for XOpenDisplay() failure
Merge pull request #38 from kmcallister/display

Fix crash from failing XOpenDisplay