trigger loading of source data during interpolation to avoid multiple loads

`LinearInterpolator` creates a snapshot of the source cube. If the source cube has lazy data, using the interpolator won't ever make this source cube's data concrete. Instead the data for the snapshot is loaded. So what? Well, the problem is that repeated calls to cube.interpolate() will cause the data to be loaded from disk over and over again. This can be demonstrated by:
````python
>>> import iris
>>> cube = iris.load_cube(iris.sample_data_path('air_temp.pp'))
>>> cube.has_lazy_data()
True
>>> res = cube.interpolate([('latitude', [1,2,3])], iris.analysis.Linear())
>>> cube.has_lazy_data()
True
```
This PR fixes the issue by triggering deferred loading prior to making a snapshot of the source cube.