Fix buffer offsets in push descriptor tests
This commit fixes push descriptor tests that were updating storage
buffer descriptors using offset values that may not have been multiples
of minStorageBufferOffsetAlignment.
In addition, it fixes image layout problems with some of these tests
that were causing validation errors.
Finally, it introduces the de::gcd and de::lcm functions to calculate
the greatest common divisor and least common multiple of two numbers.
These are useful when calculating alignments that need to meet several
base alignment requirements.
Affected tests:
dEQP-VK.pipeline.push_descriptor.*
Components: Framework, Vulkan
VK-GL-CTS issue: 2661
Change-Id: I36bcaf6114994ec5b42bcd5acc11340f079823dd