Created Tag subclass for dealing with facets
Simplified. Removed all that isn't faceted implementation.
Since property type is constant, make it so.
Extracted constant and loop invariants. Added more comments.
Extracted query handling in separate method.
Implemented removing of tags. Still need to deal with tags are not present anymore in the filtered list.