Use double check locking for credentials lazy initializing in credential providers. This is to make sure ec2 credential provider does not hit metadata service too many times when starting a highly concurrent environment.

Fixes #440