Fix for issue #156

Added a utility function to parse a string to a DateTime option, and used this to check for invalid headers.

I have no idea how to write a test for this, although I suspect we probably should.
Should we also have a DateTimeRFC1123 parse method? https://stackoverflow.com/questions/12569141/what-is-the-difference-between-rfc1123-and-rfc2822-datetime-formatting-in-php

And shouldn't the call be something like this, for that call?

``` fsharp
> str;;
val it : string = "Sat, 29 Oct 1994 19:43:31 GMT"
> DateTime.TryParse(str, CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles- .RoundtripKind) ;;
val it : bool * DateTime =
  (true, 10/29/1994 7:43:31 PM {Date = 10/29/1994 12:00:00 AM;
                                Day = 29;
                                DayOfWeek = Saturday;
                                DayOfYear = 302;
                                Hour = 19;
                                Kind = Utc;
                                Millisecond = 0;
                                Minute = 43;
                                Month = 10;
                                Second = 31;
                                Ticks = 629190566110000000L;
                                TimeOfDay = 19:43:31;
                                Year = 1994;})
```