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