Define getObserverClass in itself

Doesn't not require extending classes to implement getObserverClass
Add test to test getObserverClass()
Change getObserverClass access modifier to protected
Change test due to change in access modifier

protected method getObserverClass() can't be called from inside test, so
commented out.
Remove getObserverService() definition

Not required due to implementation in subclass
Merge branch 'omit-getObserverClass' into develop