Can lift an ordinary function to accept and return an option
Implemented a try helper to wrap exception throwing code into MyOption
Implemented map2 which has the following signature:

  def map2[A, B, C](a: MyOption[A], b: MyOption[B])(f: (A, B) => C): MyOption[C]
Implemented flatMap, orElse and filter using map.
Added more tests for flatMap and orElse.
Implemented map2 using flatMap.