Distinct: add basic distinct to the query DSL (+ add to PG adapter)

This is ready for review. 

- [x] 1. functionality as described in issue #93's (DISTINCT ON)
- [x] 2. ORDER BY issue when using SELECT DISTINCT ON in PG
- [x] 3. factoring the similar code between GROUP BY and DISTINCT (builder, some utility functions)
- [x] 4. documentation (marked as #TODO in query.ex)