Add timeout class

As discussed, https://github.com/celluloid/celluloid/pull/435

I'm also going to submit a PR with some refactoring, you can see what you think.