Improve transparency handling.

The way the alpha value worked was a bit awkward, because it completely
overwrote the transparency encoded in the color or color statelist. This made
it impossible to set anything other than an opaque value using only
setColor/setColorStateList. This commit changes things so that the alpha value
is inactive unless explicitly set.