Add custom TimeoutError

Move TimeoutError to module, publish as when.TimeoutError.  Clean up
unit tests
Update promise.timeout docs, add TimeoutError docs
Hoist TimeoutError require
Merge pull request #312 from cujojs/add-timeout-error

Add custom TimeoutError