Another try for Window Function

Hi.

I read https://github.com/slick/slick/pull/797

While I think that tminglei's first approach is not bad,
I tried to another way based on core developers' opinions.
This way is simliar to `Query.countDistinct`

Example syntax is like below.

```
val sampleFunction = TypedWindowFunctionSymbolParams[Column[Int],Int]("somefunc")
val frame = Option(RowFrame(PrecedingN(LiteralColumn(1)), FollowingN(LiteralColumn(1))))

tabA.
  map(t=>
    (...,
     Query(t).
       partitionBy(t=>...).
       sortBy(t=>...).
       windowFunctionArgs(sampleFunction, frame)(t=>...))
  )
```

actual codes about this feature are some complex and large to write here.
So, please refer to `WindowFunctionTest.scala` test code.

While try to this, https://github.com/slick/slick/pull/797 was very helpful.
Thanks, especially tminglei.