Timer and Delay

As [pointed out](https://github.com/Netflix/RxJava/pull/384#issuecomment-26843865) by @headinthebox, it's possible to implement `delay` in terms of `timer`, `map` and `concat`. 

However, there were some tricky points:

*    In order to start the timers right after they're created (and not just when `concat` subscribes to them), I had to use `replay`.
*    There is bug https://github.com/Netflix/RxJava/issues/552 which also affects `delay`.

I hope that there aren't too many further tricky points that I missed, especially since https://github.com/Netflix/RxJava/issues/552 adds confusion. So this will need another review once https://github.com/Netflix/RxJava/issues/552 is fixed.

Thanks @jmhofer for your previous work on `delay`, I reused it where possible (see commit messages).