Celluloid::Condition

Celluloid has a "signaling" API which allows you to arbitrarily suspend
and resume tasks using named labels. This is a little bit wonky and
doesn't provide any sort of API for resuming tasks across actors.

Conditions provide a more object oriented API, where each condition is
an object (similar to Ruby ConditionVariables). They should be faster
and less confusing.

This can also be used to reimplement Celluloid::Signals since they're
kind of redundant (or perhaps signals can be kept around as a legacy
feature)
Remove busted crash handling
Dispatch condition signaling via messages

This is a cleaner approach to signaling conditions which uses a message
to dispatch signals instead of just resuming tasks. This is a lot
cleaner approach which, among other things, supports signaling
conditions across actors.