Western Cape Premier Helen Zille has apologised for her offensive tweet about colonialism.