grid api

yeah - I think `PlotlyRequestError` is useful because you know that its going to be an error from your connection to the server - might be a connection error or a permission denied error etc - it might not get thrown the first time you run the function but it could get thrown when you're outside of interactive mode, in some program. so, this allows people to do stuff like:

```
try:
    py.upload(...)
except PlotlyRequestError as e:
    # yikes, something happened with my connection
    if e.status_code == 500:
        # ugh, time to tweet @plotlygraphs
        try_again_in_5_seconds()
   if e.status_code == 401:
        # yikes, conflict, time to use a new filename
```

whereas `InputError` will mostly be useful in interactive mode:
```
>> Column('asdf', [1,2,3])
InputError: Bad arguments
>> Column([1,2,3], 'asdf') # there, is that better?
```

totally down to subclass PlotlyError though.