Translatable QueryBuilder with common query building logic, TranslatableRepository findTranslatable*() methods

This PR is supposed to make some common tasks easier. These tasks involve using translatable properties in QueryBuilder which is not directly possible because they are not persistent fields. Instead they should be replaced by conditional expressions which take current locale and default locale into consideration (fallback to default locale if current locale is not set).

- finding entities by translatable properties using repository:
```php
$articles = $repository->findTranslatableBy(array(
    'title' => 'some title'
));
```
- use translatable properties in QueryBuilder where clause
```php
$qb->addWhere($qb->getTranslatableFieldExpr('a', 'title') . ' LIKE "%event%"');
```
- use translatable properties in QueryBuilder order clause
```php
$qb->addTranslatableOrderBy('a', 'title', 'DESC');
```

This method strictly checks if instance of ``Expr\From`` is passed as the ``'from'`` part or an array with single instance of ``Expr\Join`` is passed as the ``'join'`` part. These are the most common cases when higher level methods of ``QueryBuilder`` like ``from()`` and ``join()`` are used. Other cases (like ``add('from', 'User u')``) are not implemented at the moment and throw exception. They can be added as needed in the future.