Make 'await' resolve as in the C# 5.0 language specification.

This means that the awaiter type must implement INotifyCompletion and can optionally implement ICriticalNotifyCompletion.
Fixed await with generic awaiter types.
Merge pull request #128 from erik-kallen/await-csharp5-final

Make 'await' resolve as in the C# 5.0 language specification.