[Major] Refactoring the ObjectFilter to no longer rely on an interface

Now the objects put into the cache no longer need to implement an
interface, this makes it easier to adopt the filter in different
scenarios.

Tests written to validate that the filter works as expected. Still some
outstanding tests which currently fail