We should probably take `alignBy` out of the `Alignable` class (and just make it a standalone function), because it requires `Enveloped`, and the point is that we can now make things `Alignable` even if they aren't `Enveloped`.