use GridSpec in plt.subplots

Use a GridSpec object to set up the subplots in plt.subplots.  Add an optional parameter `gridspec_kw`.  This enables the user to specify `height_ratios` and `width_ratios` to get grids with unequal row/column sizes while still having the convenience that subplots provides.