add window functions support

This patch is adding **window function** support to `slick`. 

A usage example of window function is as below:
```scala
salary.avg :: Over.partitionBy(dept).orderBy(dept,salary)
                     .rowsFrame(RowCursor.UnboundPreceding, RowCursor.CurrentRow)
```

Pls help review and give your suggestions.