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 https://code.google.com/p/go--wiki/wiki/CodeReviewComments#Package_Names.
- Changing Timeout struct into 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.