Having clause support

sorry for delay. I'll write some test cases when I back home. for now this is just place holder


having clause syntax:
```
   group by columns [having CONDITIONS]

example:
  select mean(cpu), host from service group by time(1m), host having top(mean, 10) and host = 'service1'
```

* having clause only supports top and bottom. other aggregate function doesn't support.
  * you can't call top and bottom multiple times. (top(debug, 10) and bottom(debug, 1) is not allowed)

Regarding #183