Use the mailbox for terminating actors from within

If the actor is currently doing an infinite receive, it will never
realise that the @running ivar has been set to false.
Merge pull request #264 from celluloid/fix-internal-terminate

In-actor termination does not work when the actor is stuck in a infinitely blocking receive
Use a Condition for Actor#signal/wait
Merge pull request #260 from celluloid/signals-on-condition

Use a Condition for Actor#signal/wait
Revert "More forgiving thread local hacks"

This reverts commit c200845061447c010ca7e6e8069fe400c56a0427.
Revert "Actor-local Celluloid::Thread#[] support"

This reverts commit 395a6dff992a16609baa94331b50c4848678967d.

Conflicts:
	lib/celluloid/thread.rb
Reapply custom Thread methods
Merge pull request #268 from celluloid/revert-actor-locals

Revert problematic Actor-locals
Bump version to 0.15.0.pre
Remove unused Task#name accessor
Use a hash for Task metadata
Log discarded messages inside Actor and on Mailbox shutdown. Fixes #277
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