BugFix: ConcurrencyStrategy.wrapCallable was not being used for reactive event-loop threads.

The Rx Scheduler now correctly has state transferred to it with ConcurrencyStrategy.wrapCallable.

Note that if the Rx sequence ever migrates to another thread (such as using observeOn) it is up to the user to deal with this as Hystrix loses control of the flow at that point.

This change does ensure though that the initial threads the callbacks are performed on has the expected thread context.

The design of this code is not very elegant and uses a workaround similar to posting variables on a stack before a method uses them. I have used this approach because I do not want to add a 'wrapFunc2' method to the ConcurrencyStrategy as the use of Func2 is just an implementation detail internally and the users of the library should not have to replicate the effort for both Callable and Func2. Thus the internal code is a little odd but the public API is untouched.
BugFix: Race condition between run() and timeout

This uses compareAndSet to synchronize timeout vs run() completion logic when there is a race.

I have not been able to to replicate the issue reported at https://github.com/Netflix/Hystrix/issues/188 but I can see how the existing code is vulnerable to a race condition. This theoretically should fix it. All unit tests pass for existing functionality. All my attempts to create a unit test to reveal the issue failed.
Protecting against timeout race-condition for error handling.
Merge pull request #190 from benjchristensen/concurrencyStrategyWithRx

BugFix: ConcurrencyStrategy.wrapCallable was not being used on callbacks
Merge pull request #189 from benjchristensen/issue-188

BugFix: Race condition between run() and timeout
[Gradle Release Plugin] - pre tag commit:  '1.3.7'.
[Gradle Release Plugin] - new version commit:  '1.3.8-SNAPSHOT'.
Version 1.3.7
Do not record execution duration in the case of a timeout as it may
override the duration stored previously by the timer tick
Merge pull request #194 from neerajrj/nonblockinghystrixnj

Do not overwrite user thread duration in case of timeouts
[Gradle Release Plugin] - pre tag commit:  '1.3.8'.
[Gradle Release Plugin] - new version commit:  '1.3.9-SNAPSHOT'.
Version 1.3.8