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