COSCO: Container Orchestration Using Co-Simulation and Gradient Based Optimization for Fog Computing Environments