Vulkan: Pull generic SPIR-V transform functionality into base class
Vulkan: Pull generic SPIR-V transform functionality into base class

This is in preparation for adding another transformation for vertex
attribute aliasing.  This transformation is not merged with the existing
one, because in practice vertex attribute aliasing is rare so this
transformation would be rarely done.  This makes sure the efficiency of
the main transformer is not affected, and avoids complicating it
further.

Bug: angleproject:4249
Change-Id: I9c3f6cefbec99a355596579f4471d7ada810927e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2482285
Reviewed-by: Courtney Goeltzenleuchter <aa371ec5c940a0ded89f7ed95bce84faebcf51df@google.com>
Reviewed-by: Charlie Lao <2661ca4ca24c371418789adbc76dfb4875087223@google.com>
Commit-Queue: Shahbaz Youssefi <582eeec4f08a2ccd61e3ef52115e6e7c571582de@chromium.org>

ppy/angle,ppy/angle,ppy/angle,ppy/angle