Make events do The Right Thing automatically when awaited

Consider the following (incorrect) code:

    await myWindow.Events().KeyUpObservable;

This code deadlocks because we're awaiting an Event which will never complete.
This PR overrides the awaiter, so that if *and only if* you directly await the
event, you will get an implicit Take(1).  This means that existing code won't
break:

    // Since the return type of Select isn't SingleAwaitSubject, our rigged
    // awaiter doesn't apply, they get the default one.
    await myWindow.Events().KeyUpObservable
    	.Skip(2)
	.Select(x => x.Key);
Merge pull request #586 from reactiveui/event-awaiter

Make events do The Right Thing automatically when awaited
Rename RxCmd Creation methods to be clearer
Fix up names in ReactiveUI
Fix using statement for SingleAwaitSubject
Merge branch 'rxui6-master' into cmd-overloads
Update the tests
RIP GTK+
Eviscerate ReactiveUI.Platforms
Rename what's left to ReactiveUI.Winforms
Rename some project files
Rewrite all of the csproj files
Update XS Solution file
Fix up dependent references
Fix up Xamarin build
Add in new projects for XAML-based platforms, get them building
Fix dependent project references
Update the tests
Merge branch 'rxui6-master' into bait-switch
Don't get trolled by obj folder aliasing