Promise.timeout() indicates time-out more precisely

When using Promise.timeout() you may want to differentiate between a
promise time-out and other errors. To achive this I have added a
TimeOutError class which Promise.timeout() use as rejection reason in
case of a time-out.
Merge pull request #41

Accepted with minor modifications:

* converted indentation in TimeOutError from spaces to tabs to match the rest of the project
* changed TimeOutError to TimeoutError for naming consistency (i.e. timeout() method, not timeOut())
* tweaked comment in Promise.as to reference TimeoutError
* added comment in TimeoutError to reference Promise::timeout()

Thank you!

Fixes #41
Merge branch 'k7sleeper-master'

Fixes #41