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.
Actually @gdamore, this code already supports non-blocking operations as-is since `time.After(-1)` will be immediately selectable. That being said, non-blocking operations aren't going to behave non-deterministically (with this change or the current code). `select` statements *pseudo-randomly* choose a selectable `case` to proceed, meaning if a non-blocking deadline is given and the upper write queue can be written to, it could just as well select the first case.