Add a validator for validating components in the cluster infrastructure.

Closes #1295 
I thought about it, but the existing health checker code is very much about checking the health of pods, the signature is:

```go
HealthCheck(podFullName string, currentState api.PodState, container api.Container) (Status, error)
```

We could probably re-factor to have a generic HTTP health checker, but I'm actually not sure it would save that much.  Also, in this case I'm treating non-200 as "unhealthy" whereas the health checker as a broader policy.