I just noticed that cube.convert_units works when the cube doesn't have an existing unit. E.g.:
mycube = iris.cube.Cube(1.)
mycube.convert_units('mm day-1')
print mycube
print mycube.data
produces this output:
Shouldn't convert_units produce an exception if it doesn't have a unit to map from?