ENH: add time-window capability to .rolling
xref #13327
closes #936 

This [notebook shows the usecase](http://nbviewer.jupyter.org/gist/jreback/186d09a99902a17a095d99ac6a5e4cd3)
- implement lint checking for cython (currently only for windows.pyx), xref #12995

This implements time-ware windows, IOW, to a `.rolling()` you can now pass a ragged / sparse timeseries and have it work with an offset (e.g. like `2s`). Previously you _could_ achieve these results by resampling first, then using an integer period (though you would have to jump thru hoops when crossing day boundaries and such). 

This now provides a nice easy / performant implementation (as indicated on the linked notebook, min/max impl is giving scaling issues).

```
In [1]: df = DataFrame({'B': range(5)})

In [2]: df.index = [Timestamp('20130101 09:00:00'),
   ...:             Timestamp('20130101 09:00:02'),
   ...:             Timestamp('20130101 09:00:03'),
   ...:             Timestamp('20130101 09:00:05'),
   ...:             Timestamp('20130101 09:00:06')]

In [3]: df
Out[3]: 
                     B
2013-01-01 09:00:00  0
2013-01-01 09:00:02  1
2013-01-01 09:00:03  2
2013-01-01 09:00:05  3
2013-01-01 09:00:06  4

In [4]: df.rolling(2, min_periods=1).sum()
Out[4]: 
                       B
2013-01-01 09:00:00  0.0
2013-01-01 09:00:02  1.0
2013-01-01 09:00:03  3.0
2013-01-01 09:00:05  5.0
2013-01-01 09:00:06  7.0

In [5]: df.rolling('2s', min_periods=1).sum()
Out[5]: 
                       B
2013-01-01 09:00:00  0.0
2013-01-01 09:00:02  1.0
2013-01-01 09:00:03  3.0
2013-01-01 09:00:05  3.0
2013-01-01 09:00:06  7.0
```
