[feature] generic layout destroy

Refactor destroy API for layouts so that we can solve a long standing
ownership issue with complex layouts. Putting the destroy operator
inside the implementation-specific ops allows us to call a generic
destroyer on embedded layouts.

Note that this introduce a ownership policy for pad & reshape layouts
that take ownership of the targeted layout at creation time.

Related to #55.
7 jobs for layout-destroy in 3 minutes and 23 seconds (queued for 1 second)