Cleanup around Layer::update().

Not overriding where not necessary.
Implementing setTextColor().

Also added proper idea of whether the text is dirty or not. (i.e. has it
been changed in some visible way since the last time the text surface
was rendered)  ButtonLayer::update() is now used appropriately.