Add custom TimeoutError

Add `TimeoutError` and make `promise.timeout` use it for rejections by default.  This allows pattern-matching via `catch(when.TimeoutError, handleTimeoutError)`.  You can also get `TimeoutError` via `require('when/lib/TimeoutError');` if you don't want or need to `require('when')`.