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)