Expand rectangle with padding

Ran into the case where I needed to expand the bounds of a layout by a specific Padding rather than a single f32.

Right now the expand method on Rectangle takes a single f32 to perform uniform expansion, would be a nice enhancement to make the expansion more generic.

fn expand(self, padding: impl Into<Padding>) -> Self {
        let padding: Padding = padding.into();
        Self {
            x: self.x - padding.left,
            y: self.y - padding.top,
            width: self.width + padding.left + padding.right,
            height: self.height + padding.left + padding.right,
        }
}

This will keep the same behavior as before, since f32 has an Into for Padding and all the arithmetic works out to being the same.