Add shrink support

This is a complete rework.

I'm not sure if my approach to work around the scrollbar will work cross-browser (I've only tried in Chrome):
I noticed that if there is no scrollbar showing, that there will be `2 + el.cols` columns and only `el.cols` columns when the scrollbar is showing.  That value may be different on other browsers and it doesn't take into account if the scrollbar is always visible via CSS.

This also includes my last PR to include min and max row options