use ManualResetEventSlim instead of ManualResetEvent

ManualResetEventSlim was introduced in .NET 4 and improves performance
in tight loops if signaling does not cross process boundaries (which is
the case here)