Bayesian Optimal Design Using Stochastic Gradient Optimisation And Surrogate Utility Functions