contrib: add dokku client shell script

This is adapted from the one I use in my shell profile scripts. This
kinda-sorta-maybe acts like the `heroku` or `deis` commands and does
some clever reorganization of data before sending it to the server.

To use the app name generator, install the `elfs` rock from Moonrocks.
Merge remote-tracking branch 'upstream/master' into mh-merge-upstream
Merge pull request #1 from expa/mh-merge-upstream

merge from upstream
Merge pull request #2 from progrium/master

merge from upstream
Added environment variable for base container

In order to be able to use a different base image i have added another
environment variable where everybody can switch the used base container
for the applications directly through the environment variable
DOKKU_IMAGE or with the help of the dokkurc configuration.
Added openSUSE support

I have done the first steps to get dokku running for other distros like
openSUSE. I have simply replaced the important places within the core
plugins with a check for DOKKU_DISTRO that gets exported by dokku
itself. It just replaces the apt-get and service start/restart/reload
functionality with the openSUSE counterparts.
Minor bash formatting changes
Merge pull request #751 from webhippie/feature/improvements

Partial openSUSE support
Merge pull request #779 from progrium/minor-formatting

Minor bash formatting changes
Output error message when a command is not found. Closes #778

Plugins with commands will need to implement a catch-all command that exits with the `DOKKU_NOT_IMPLEMENTED_EXIT`` code (10). This signals to dokku that a given plugin has indeed not executed anything for a plugin (which may not always be the case).

Using plugins that do not implement this pattern will result in those plugins silencing the error message.
Merge pull request #659 from Xe/client

contrib: add dokku client shell script
Rename DOKKU_CONTROLLER to DOKKU_HOST
Handle dokku plugins-update command
Merge pull request #669 from ohardy/master
Keep environment for sudo

To be able to set some other environment variables even if dokku gets
called from a different user we have to keep the environment with sudo
intact, so i added the -E option.
Replaced hard coded plugins path

To be able to switch the plugin path i have removed the hard coded
plugin path from the catch all section of the switch within the main
dokku executable.
Merge pull request #777 from feature/improve-core
Add `git pull` support
Merge pull request #722 from wrboyce-git-pull
Move git-upload-pack command to git plugin

Also use the same APP escaping as used for other git commands.