Return the same type of EventStream as its source

Closes #6
Override Stream methods to always return EventStream

Closes #7
Add when() method to EventStream

Closes #1
Rename Observable to Watchable

Closes #5