Avoid string copy when allocating NanoError

Uses c_str_to_static_slice to get the description instead of creating a copy.
Makes the description field of NanoError a &'static str instead of SendStr.
Implements manually fmt::Show instead of the to_str function.
Moves from_nn_errno inside NanoError impl.