unit tests for covariance

- refactoring so not everything for the entire Observable ends up in a single class
Merge pull request #363 from benjchristensen/reduce-covariance

unit tests for covariance