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.
Merge pull request #2647 from rwirth/subplots_gridspec

use GridSpec in plt.subplots