A few changes to make it mesh better.

Here are two changes on top of your pull requests that I would like to be part of your PR.

rename `from(String)` to `byCharacter(Observable<String>)` to better match `byLine(Observable<String>)`.
removed the `Line` class because can be better done with `zip(Observable.range(0, MAX_INT), byLine(src), func2)`