pull out can_transition for reuse
add can_release
queue up releases when in a state that can't directly release
add test for illegal transition during renewing
empty release queue when processing it
make _log_error a function

Make _log_error a function so release() callbacks during Daemon DESTROY
are not self-referential since callbacks are executed asynchronously.
switch from IO::Pipe to socketpair
add bidirectional communication with TestWebServer
add end-to-end test for release during renew
Merge pull request #21 from nnutter/fix_illegal_transition_during_renewal

Fix illegal transition during renewal