filterKeyValue

A way to filter based on the column family, column qualifier and/or the column value. Return
code is described below. This allows filters to filter only certain number of columns, then
terminate without matching ever column.
If filterRowKey returns true, filterKeyValue needs to be consistent with it.
filterKeyValue can assume that filterRowKey has already been called for the row.
If your filter returns ReturnCode.NEXT_ROW, it should return
ReturnCode.NEXT_ROW until Filter.reset() is called just in case the caller calls
for the next row.
Concrete implementers can signal a failure condition in their code by throwing an
IOException.

filterRow

Filters that never filter by rows based on previously gathered state from
Filter.filterKeyValue(Cell) can inherit this implementation that
never filters a row.
Last chance to veto row based on previous Filter.filterKeyValue(Cell) calls. The filter
needs to retain state then return a particular value for this call if they wish to exclude a
row if a certain column is missing (for example).
Concrete implementers can signal a failure condition in their code by throwing an
IOException.

reset

Filters that are purely stateless and do nothing in their reset() methods can inherit
this null/empty implementation.
Reset the state of the filter between rows.
Concrete implementers can signal a failure condition in their code by throwing an
IOException.

filterAllRemaining

Filters that never filter all remaining can inherit this implementation that
never stops the filter early.
If this returns true, the scan will terminate.
Concrete implementers can signal a failure condition in their code by throwing an
IOException.