[Do not merge] Rewrite everything from scratch

Total rename, change concepts, implementation...

Important changes.

* Abstract class `Observable` and two actual descendants: `Stream` and `Box`.
* No errors as first class citizens. When there will be an option we have the errors, we'll have stream of either.
* No `flatMap` on Observable. Only descendants are monads.
* No `merge` on `Box`, no `zip` on `Stream`.
* Less primitives, more high-level combinators. Even by the cost of efficiency. We'll find out what's slow later.