Changed state machine

The new implementation will not allow simultaneous execution of the
Collect event.
A work can only be scheduled once at a time

Calling Start on a work may fail, Start will return fall if the
AppDomain is shutting down or if the work is already scheduled.
Simplified the state machine

By trusting that Work is never scheduled twice (note: if you need that,
clone the Work), and by trusting that a Work can be rescheduled after
completed the implementation of GCMonitor is improved by using a single
Work instance in GCProbe. This means that GCProbe will not generate
garbage.
Fix for AddWork overload - edge case

[Why didn't I notice this before?]
Moved the field _work to GCMonitor

Having _work in GCProbe means that it may be garbage collected before
GCProbe causing a NullRefereceException, so it was moved to GCMonitor.