Adjust broker locking order slightly
Adjust broker locking order slightly

I was doing an unrelated experiment with a config that generated a warning on
validation, and I ended up flooded with warnings because we now call `Open` on
every broker returned from the Client, and we were revalidating the config every
single time. One thing led to another and I made several other adjustments in
the same vein.

- Move the atomic `AlreadyConnected` check to before the config validation in
  `Broker.Open`. Config validation is expensive and can log, no point in doing
  it if we don't have to.
- Move all the `atomic.StoreInt32` calls to *after* any of their related log
  messages. None of these were real problems, but it removes any possibility of
  out-of-order log messages due to unusual race conditions.
- Remove the double-check for `AlreadyConnected` after we've taken the full
  lock. Initially I just removed the log message since it's not something we
  need to log, but upon closer inspection I'm pretty sure this is dead code;
  anything that sets `opened` to 0 also sets `conn` to nil *first*, and does so
  while holding the lock.

raisemarketplace/sarama,HelixEducation/sarama,VividCortex/sarama,raisemarketplace/sarama,DataDog/sarama,vrischmann/sarama,remerge/sarama,Shopify/sarama,HelixEducation/sarama,remerge/sarama,DataDog/sarama,vrischmann/sarama,Shopify/sarama,mailgun/sarama,mailgun/sarama,VividCortex/sarama