Observable API reduction

- remove static methods that are not entry points (creators or combinatorial)
- remove deprecated methods

This change was done to:

- Reduce the footprint of the API
- Clarify the API so instance methods are preferred unless the static method is appropriate as an entry point
- Remove duplicate method signatures (such as a buffer method) where the only difference was one was static. This actually causes issues at the bytecode level with dynamic languages since the only difference between them is a modifier making one of them static. Some dynamic languages have a hard time choosing between the two methods when both have the same signature.
Move Observable UnitTests

The Observable class is huge by nature as it is the facade for all operators. Due to this it represents all functionality and should not have it's tests inside it. They are moved to /src/test/ so as to allow breaking them up into lots of individual classes.