Add support for custom commands for Image.show() on Unix/Linux

Currently, calling Image.show with a custom command does not work as expected. For example:
```python
im = Image.new('RGB',(512,512),'green')
im.show(command='gwenview')
```
does not open the image with gwenview, but uses the default logic to open it with either display or xv on linux.
With this patch the command option works as expected on linux. I added some stub classes for Mac and Windows, but they will fall back to the default behaviour for said systems. I am not as familiar with them so I will let someone else take care of that.