Replace timeouts. Instead, use Contexts with Deadlines/Timeouts

@jbenet @whyrusleeping 

This PR marks the beginning of some `timeout` refactoring. If this is a desirable course of action, I will follow up this first commit with commits that completely replace the `timeout` with the `context`. At the "leaves" where timeouts are actually handled, I intend to have actors listen on `<-ctx.Done()` and handle `Canceled` and `DeadlineExceeded` errors as appropriate. Let me know what you think.

Also: regarding imports, is there a preferred order for vendored packages versus internal packages?