Resolved pickling issues with deferred loading.

When attempting to pickle a cube with 2d lats and lons loaded from netcdf I get a PicklingError:
```python

import pickle

import iris
import iris.tests as tests


filename = tests.get_data_path(('NetCDF',
                                'rotated',
                                'xy',
                                'rotPole_landAreaFraction.nc'))
cube = iris.load_cube(filename)
with open('bob.pkl', 'wb') as fileout:
    pickle.dump(cube,fileout)
```
Leads to:
```pickle.PicklingError: Can't pickle <function <lambda> at 0x10e858578>: it's not found as iris.fileformats._pyke_rules.compiled_krb.fc_rules_cf_fc.<lambda>```

This is because the 2d auxiliary coords are loaded using LazyArrays which do not dispose of a reference to a function object after loading the points. Having fixed this I then hit:
```TypeError: a class that defines __slots__ without defining __getstate__ cannot be pickled```
due to an issue with the NetCDFProxy class.

This PR fixes these issues and allows me to pickle and unpickle this cube.