Fixed memory consumption for certain WFMO usage patterns

In cases where WaitForMultipleEvents is called with multiple events
and waitAll is set to false, the WFMO wait objects queued in the
events' RegisteredWaits deque are only removed for the event that
was then signaled as a performance optimization; the WFMO wait
objects queued for other events are cleaned up the next time a call
to WaitForMultipleEvents is made, via the RemoveExpiredWaitHelper
function. (Otherwise we'd have to obtain the mutex for all events
in the array once more before exiting the WFME call).

In certain non-standard usage patterns where WFME() is called with
one or more events that did not trigger (and waitAll is false) and
no subsequent calls were (ever again) made to WFME with the non-
triggered events, the WFMO wait objects would remain allocated
indefinitely.

This commit addresses this issue by explicitly calling the
RemoveExpiredWaitHelper() function on calls to DestroyEvent(), at
the cost of obtaining a mutex lock for the event. As DestroyEvent()
should never be called on events being waited on, the mutex should
always be available leading to a hopefully negligible delay in
obtaining the mutex before ultimately destroying it.

Credit to Nguyen Giang <GiangND@fsoft.com.vn> for pointing out the
memory consumption issue.
Added implementation of PulseEvent(), disabled by default

Even though PulseEvent() is and always has been completely broken
and unsafe to rely on for deadlock-free code [0], I've decided to
include it in pevents as an optional feature via -DPULSE as some
libraries being ported from Windows to *nix are using PulseEvent()
and will want to implement similar behavior in pevents instead of
rewriting the code to actually use sound synchronization methods.

I figure writing as close to a correct PulseEvent() implementation
that behaves "as right/wrong" as the Win32 implementation to be a
better scenario than a fully broken PulseEvent() being hacked on
to pevents.

[0] Excellent discussion on PulseEvent() and why it's broken:
http://blogs.msdn.com/b/oldnewthing/archive/2005/01/05/346888.aspx
Added documentation for PulseEvent() to README file
Merge branch 'PulseEvent', adding PulseEvent() to the pevents API