fixes #36 Send/Recv deadline is an absolute time.Time

This changes OptionRecvDeadline and OptionSendDeadline to use a
time.Duration instead of an absolute time.Time. Fixes #36.
The point about non-deterministic select is a valid one.  TBH, I don't have any particular use case in mind for non-blocking operation -- this would probably be an anti-pattern in Go (unlike in C, where non-bloocking operation is probably critical to many use cases.)

If time.After(-1) works properly, then I'm satisfied -- it will behave no worse than it did before.  Lets wait to see if anyone else has any stronger opinions.