Implemented "First" and "FirstOrDefault" operations

This PR builds upon the `skipWhile`  PR (#355) which makes implementing the two `first` variants extremely easy.

I changed `firstOrDefault` slightly from what Rx.NET does by explicitly requiring a default value as parameter of the function call. I don't know what default value I should return otherwise, except `null` (and imho this would be pretty useless).

This PR addresses issue #44.