Introduce a generic layout destructor, so that users can destroy a layout without having to know its implementation type. This is required in various places to avoid complex ownership issues, in particular with "overlay" operations like reshape, slice, and paddings.
Related to #55 (closed). Required to finish !143 (merged) on tiling ownership issues.