Log a warning on initialize and finalizer suspending
Raise an exception when shutting down a mailbox successively

Fix the exception class in Celluloid.shutdown
Rename tasks to waiters in Condition

Remove unused Condition#owner reader
Add pry to Gemfile
Share the thread-pool queue between TaskFibers
Optimize TaskSet

The previous implementation of TaskSet was undesirable for a number of reasons:
simply to avoid the problem of concurrent access during StackDumps, it allocated
not only a new Set object each time tasks were added or removed, but also an
array. By copying every time the data structure was modified, this
implementation could take advantage of the fact that instance variable
modifications are "volatile" (in the Java sense) and provide some degree of
thread safety.

There's a much better approach we can use: locks :O

This implementation uses JRuby::Synchronized, a magical JRuby module which
effectively adds Java's "synchronized" to our class definition. This also lets
us take advantage of the fact that uncontended locks are cheap (Linux's futexes
are effectively "lock-free" when uncontended)

On MRI, the Set contant is bound to TaskSet, and we can depend on implementation
errata (i.e. the GIL o_O) to take care of synchronization for us.

This does leave the matter of Rubinius and other Ruby implementations like
IronRuby which don't have a GIL. I will consult with a few implementers of these
Rubies as to what the best solution is here.
Synchronization support for Rubinius
Merge pull request #280 from celluloid/task-set-revamp

Optimize TaskSet
Reset the logger before shutting down in each spec
Always create a Task regardless of the Actors exclusives

This change means that we need a new concept to distinguish the old
behavior which did not create a Task, but instead gave users direct
exclusive access to the actor Thread.
Remove deprecated finalizer code
Merge pull request #281 from celluloid/exclusive-task

Always create a Task regardless of the Actors exclusives
Merge pull request #256 from celluloid/remove-deprecated-finalizer

Remove deprecated finalizer code
Improve the structure of StackDump
Merge pull request #286 from celluloid/cleaner-stackdump

Improve the structure of StackDump
JRuby build shouldn't be allowed to fail

We're past the fiber breakage in JRuby 1.7.3
Do not shutdown the mailbox when an IOError occurs in EventedMailbox

This is redundant as the exception which is raised will shutdown the
mailbox immediately afterwards.
Only shutdown the mailbox when killing the Actor if it is alive
Celluloid::Properties

A "property" macro for adding declarative properties to a class which are
inherited but overridable in subclasses. Sort of like what class variables
always should've been.

Just an idea for now, but this can be used to replace things like
"mailbox_class" and "execute_block_on_receiver"
Use Celluloid::Properties for all actor class properties

This results in some minor API changes, specifically mailbox.max_size as a class
attribute, which is replaced in this commit as mailbox_size

I know there are plans to change these, but this largely preserves the existing
API with a few minor changes.