General filter

Add a filter method that can filter based on id, metadata and values (Addresses [this comment](https://github.com/biocore/biom-format/issues/292#issuecomment-42692982)).

Like transform, the function gets a dense array of the nonzero values per sample/obs. Is that OK or does the user supplied filtering function need to see the whole row/column?

It's not much slower (maybe 10%) than the version that only receives ids and metadata, so I'd consider keeping only the general version.