Added Option class with implicit conversion to Option<A> to make it a
  bit easier to create Option<A> instances (Option.Empty or Option.Some(a)).

Replaced custom OptionEnumerator with IEnumerable<A> method using yield.

Added ToOption extension method which converts a null reference to Empty
  and valid instances to Some.