Create Filter class, some basic filters, and propose a mechanism for issuing a filter command

Issued #91 #104 
Unit test coming soon.

This example explains everything this design *will* be used in v0.5.

```
using F = Filter;
// Filter objects holds lambda and can use boolean operators as combinators
auto gfBirthday = F::taggedAs(L"girlfriend") && F::taggedAs(L"birthday");
auto foo = F::thisWeek() && (F::partOf(gfBirthday) || F::taggedAs(L"birthday-surprise"));

// Filter objects can be then passed to `FilterTask` query constructor
QueryEngine::executeQuery(FilterTask(foo));
```