WIP: Refactor docker-machine calls

Open Kamil Trzcińśki requested to merge refactor-docker-machine-calls into master

This reduces number of API calls using docker-machine, since some of the data are cached.

  • Use Exist instead of CanConnect when acquiring machine
  • Cache DockerCredentials to not call it every time, just check the machine state with CanConnect (consumes one request per build)
  • Refactor Use to unconditionally allocate machine if we can't connect to existing one

@tmaczukin what do you think?