added initial equals() and hashCode() methods
added ability to tie a owner ID to an observer so they can be removed by owner ID as well (used for cleaning up observers created by client via API)