API: accept -1 for layout in plot functions

Closes https://github.com/pydata/pandas/issues/8071#issuecomment-55906171

```python
In [1]: df = pd.DataFrame(np.random.randn(20, 3))

In [2]: df.plot(subplots=True, layout=(-1, 2))
Out[2]: 
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x116b134e0>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x117819240>],
       [<matplotlib.axes._subplots.AxesSubplot object at 0x11786b6a0>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x1178a5ba8>]], dtype=object)

```

![ex](https://cloud.githubusercontent.com/assets/1312546/4309486/b0f963f4-3e9c-11e4-965f-f0ed78c1412b.png)

I have one of those [here](https://github.com/pydata/pandas/pull/8297#diff-0931dce6e0a1d3d9024f2da8117f3cc4R694).

The tests are scattered all over because I decided to put them in with wherever layout was already used.