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!
Merge pull request #250 from celluloid/recursion-detection

Recursion detection and #inspect infinite loop fix