Display `distinct` query results using GROUP BY

Relates to #191

This change does not solve the problem of #191 (where duplicates entries are created in `smw_objects_ids` etc.) but to avoid having duplicate entries being displayed we remedy the situation by averting its display.

### QueryEngine

Use `GROUP BY` to allow for INNER JOIN values the be distinctive as well. See also [distinct-vs-group].[distinct-vs-group].

### SemanticData

Using a `hash` to determine that a specific column value has been already processed and avoid its output duplication during `getPropertyValues()` or `getSemanticData`.

[distinct-vs-group]: http://sqlmag.com/database-performance-tuning/distinct-vs-group