Introduce transforms which operate solely on metadata

Per #176, this commit adds an interface for transforms that only affect metadata, and makes all the metadata only transform I noticed inherit from it.