Add type contracts utilities and use them in Observer and Observable
classes for paramter verification.
Use contract utilities in Observer and Observable classes