RxScala: Add the rest missing methods to BlockingObservable

Some comments about this PR:
* Changed the constructor from `BlockingObservable[+T] private[scala] (val asJava: rx.observables.BlockingObservable[_ <: T])` to `BlockingObservable[+T] private[scala] (val o: Observable[T])` so that we can implement logic in `BlockingObservable`.
* Avoided to use `toIterable` to implement `***Option` and `***OrElse` because if some exception happens, we can not unsubscribe the underlying `Observable` by `Iterable` at once.

/cc @headinthebox, @samuelgruetter
Why not use Option.getOrElse to implement this?