1. add conditional set on the cache interface
2. add first() combinator to return first N future results(with timeout)
3. upgrade version to 0.17