Aside: A very useful value object, but we could move the geometry calcs into it. E.g. add it to core as Elgg_Size_Rectangle and add method `->fitInto(Elgg_Size_Rectangle $boundingBox)`. This would proportionally reduce the current values and spit out a new size object.