title: Create Iris Cube from a fileobject or netCDF4 dataset
body: <p>Is there a way to create (open/load) an Iris Cube using a fileobject (binary stream), or alternatively, from a netCDF4 dataset object?</p>
  
  <p>Specifically, I have a file served over a URL, but not by an OpenDAP server; <code>iris.load_cube()</code> &amp; friends fail on this.</p>
  
  <p>I realise that Iris prefers lazy loading, and therefore uses a URI instead of in-memory data, but this is not always feasible.</p>
  
  <p>For a plain netCDF4 <code>Dataset</code> object, I can do the following:</p>
  
  <pre><code>from urllib.request import urlopen
  import netCDF4 as nc
  
  url = 'https://crudata.uea.ac.uk/cru/data/temperature/HadCRUT.4.6.0.0.median.nc'
  with urlopen(url) as stream:
      ds = nc.Dataset('HadCRUT', memory=stream.read())
  </code></pre>
  
  <p>So I'm looking to do something similar for an Iris <code>Cube</code>, or read the netCDF4 dataset into a cube, without going through a temporary file on disk. I had hoped something would exist in the Iris functionality, but I have not (yet) been able to find it in the reference documentation.</p>