Add capacity hint version of Observable.cache()

- Special case in ReplaySubject for create(1) to optimize for single emitted value

- Add unit tests for Observable.cache(1) and ReplaySubject.create(1)

@benjchristensen is this the kind of solution you wanted for #1303?