Make the filter function have an async option.

This fixes issue #6
For backwards compatibility, the new filter method falls back on filterSync if no callback is provided.
Existing tests pass, proving the sync fallback works. The async option needs code coverage in the tests.