Change timeout.Timeout into an interface.

- Since there's only one New* func in timeout package, it's more idiomatic to call it timeout.New() rather than the redundant timeout.NewTimeout(). See [Go style guide](https://code.google.com/p/go-wiki/wiki/CodeReviewComments#Package_Names).
- Changing Timeout struct to be unexported makes the API clearer; timeout.New() is the only way to create it. No longer possible to create timeout.Timeout{} struct which would be invalid.