feat(controller): add endpoint and infrastructure for limiting memory/cpu
feat(client): add commands for managing memory/cpu limits
docs(client): add more clarity to limit:set
docs(client): more clarity on limit:set options
docs(reference): add deis limit autodocs
ref(client): rename limit to limits

'limits' follows our other commands' syntax much better i.e. apps:list,
releases:rollback etc.
docs(client): more clarity on limits:set
ref(client): move options from argument list
fix(client): move options list before arguments

Docopt does not allow additional commands after ellipsis as it's hard
to determine when they end (e.g. is this argument an arg or an option?).
ref(controller): move limits to Config model

A Release is a Build and a Config, not a Build, Config and a Limit.
Limits make sense as configuration for the Build, so this moves it
over as a Config field.
style(client): flake8
fix(controller): rename /limit to /limits
docs(controller): add Limit server autodocs
style(controller): revert code folding
fix(builder): fix race condition in /bin/boot

Commit b0572ef seemed to introduce a race condition. It seems that
etcdctl will return before the key that was set has fully persisted
to the key/value store, so a subsequent get will not always see the
new value of the key.

This resulted in builder often failing to start up, but restarting
it made it come up immediately. This is because the keys
`/deis/slugbuilder/image` and `/deis/slugrunner/image` were populated
by the second time the component was started.

This commit refactors this logic to remove the race condition.
Merge pull request #1513 from deis/resource-limits

Memory/CPU limits for application containers
Merge pull request #1550 from deis/fix_builder_race

fix(builder): fix race condition in /bin/boot
fix(controller): fix logging of limit changes on release
docs(contrib) expand bare-metal provisioning
docs(logger/syslog): amend syslog server docs