TEPHRA-4 TransactionVisibilityFilter should support additional filtering on visible cells

This change adds support in TransactionVisibilityFilter for an additional filter to apply to visible cells.  This allows the subfilter to control the return code used for these cells (e.g. INCLUDE vs. INCLUDE_AND_NEXT_COL).

This also cleans up some filter handling and allows the TransactionVisibilityFilter construction to be overridden in TransactionDataJanitor, so that other implementations can take advantage of the additional filtering.
I am not sure about semantics of this. Which filter gets applied first? The baseFilter, right? Wouldn't it be more natural to change the order of arguments - so that reading from left to right is natural order in which filters are applied? I know that would mean that the nullable argument comes first, but it seems more natural to me in that order. Matter of taste, not correctness, though. Up to you.