support per-service config files

If the main config dict has a "service_conf_dir" key, use that value as
the name of a directory in which to search for multiple foo.json files.
Each file is parsed in turn, and appended to the main configuration dict
as a service named after the basename of the file, stripped of the .json
extension.
docker service_watcher
default port for docker http
update for docker 0.6.5 port string
argument nil check
spawn thread in constructor
expand config file dir
fix one var name and some style nits
infer haproxy config section fields

instead of specifying `listen`, we specify a `config` section for haproxy
when generating sections for haproxy, we infer whether to place a config line there
based on whether it belongs there

this addresses synapse#17
haproxy: generate config as lists instead of using string concat
haproxy: store parsed haproxy configs from each watcher

this allows us to avoid doing complex parsing more than once
haproxy: allow alerting on invalid config fields

we do this by changing the loop around to go through the settings first
haproxy: deprecate the listen section

on second thought, having to infer the sections seems ridiculous. lets just
remove listen sections and generate frontend and backend sections. this provides
the most flexibility. we still parse the listen config into frontend/backend
sections using what we know about haproxy
haproxy: prettier stanza generation

both in code and by appending a tab before each config line
Merge pull request #18 from memory/multi-conf

support per-service config files
Merge pull request #20 from airbnb/infer_haproxy_section

infer haproxy config section fields
haproxy: properly remove multiple spaces from field names

the current version removes the letter s
Merge pull request #21 from airbnb/proper_field_parsing

haproxy: properly remove multiple spaces from field names
docs: document the frontend/backend sections

don't deprecate the listen section for now; it seems to still be useful
Merge pull request #22 from airbnb/document_new_config

docs: document the frontend/backend sections