Deadlock Detection

Implemented a basic deadlock detection mechanism. It probably doesn't
cover every case, but at least it's a start.

Also, I realized that some Java constructs such as try/catch blocks
don't play nicely with how methods are instrumented for interleaving.
I'll have to revisit this issue.