Remove ! async syntax
Moar small spec fixes.
Basic recursion detection

...and some incidental refactoring which moves some of the call chain thread
local thunking into a separate class (which sadly has only singletons right now)

This detects multiple tasks within the same actor that share a call chain.
Ideally it'd also check a method name as well, but tasks don't track that "yet"

Writing this whole patch made me a bit of a sad panda about how tasks are
presently managed. I'd probably prefer a system where messages manage the tasks
and can populate them with more information about what they're doing which
can be used for this sort of introspection.
Detect recursion in #inspect (fixes #22)

This detects recursion between actors during #inspect and similates Ruby's own
behavior for representing circular object graphs, replacing duplicate instances
of the original actor in the inspect output with "...", e.g.:

    #<Celluloid::ActorProxy(Foo:0x3fe79ea577f4) @bar=#<Celluloid::ActorProxy(
    Bar:0x3fe79e0585b4) @foo=...>>

The above shows a cyclical relationship between the Foo and Bar classes.

Without this sort of detection #inspect goes into an infinite loop which can
be both confusing and infuriating to newcomers and the experienced alike,
myself included!
Only allow 2 exceptions to be automatically raised inside Tasks
Merge pull request #252 from celluloid/careful-error-resuming-in-tasks

Only allow 2 exceptions to be automatically raised inside Tasks
Merge pull request #249 from benlovell/moar-spec-fixes

Moar spec fixes
Synchronize reactor shutdown with message adding
Give threads a default role of nil for BC
Add a spec covering actor internal termination in a SyncCall
Add spec for ThreadHandle role
Merge pull request #253 from celluloid/fix-reactor-race

Synchronize reactor shutdown with message adding
Merge pull request #250 from celluloid/recursion-detection

Recursion detection and #inspect infinite loop fix
Merge pull request #254 from celluloid/thread_handle_bc

Give threads a default role of nil for BC
Merge pull request #246 from celluloid/remove_bang_async

Remove deprecated ! async syntax
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.