This adds a ShadowedRectangle item, which is a rectangle with a shadow.
It uses a custom shader that draws the rectangle and the shadow below it
using distance fields, which has significantly better performance compared
to the DropShadow effect. It also supports rounded corners, which the
current Card code does not.
This is a first step to moving more of AbstractCard and related items to
C++ code. Other bits will include a ShadowedImage item and moving actual
card code to C++.