First pass at service checks for ES, Redis and Postgres

For review. I still need to do some tests locally but I am currently having issues with Colvin on my VM.

Question about service checks: should a service check overlap the agent check failures when an integration is misconfigured? Or should it just report "no data" when an integration is misconfigured?

You should only tag service checks by known groupings, e.g.: db, port, etc. Arbitrary tags won't work in the same way as they do with metrics because there's no way to "roll-up" different tag groupings (at least for the basic time-aggregated monitors). So we're always going to use the lowest grain, whether it's (host,port,db) or just (host) for our grouping.

It's a bit confusing (and may be confusing for users) so I'm happy to discuss this in person tomorrow.