crochet.wait_for implements the timeout/cancellation pattern documented
in previous versions of Crochet. crochet.wait_for_reactor and
EventualResult.wait(timeout=None) are now deprecated, since lacking
timeouts they could potentially block forever.

Functions wrapped with wait_for and run_in_reactor can now be accessed
via the wrapped_function attribute, to ease unit testing of the underlying
Twisted code.

API changes:

It is no longer possible to call EventualResult.wait() (or functions
wrapped with wait_for) at import time, since this can lead to deadlocks
or prevent other threads from importing. Thanks to Tom Prince for the bug
report.

Bug fixes:

warnings are no longer erroneously turned into Twisted log messages.

The reactor is now only imported when crochet.setup() or
crochet.no_setup() are called, allowing daemonization if only crochet
is imported (http://tm.tl/7105). Thanks to Daniel Nephin for the bug report.

Documentation:

Improved motivation, added contact info and news to the documentation.

Expanded and much improved documentation, including a new section with
design suggestions.

New decorator @wait_for_reactor added, a simpler alternative to
@run_in_reactor.

Refactored @run_in_reactor, making it a bit more responsive.

Blocking operations which would otherwise never finish due to reactor having
stopped (EventualResult.wait() or @wait_for_reactor decorated call)
will be interrupted with a ReactorStopped exception. Thanks to rmorehead
for the bug report.