Add NSAnimationContext and refactor the attribute list so it can also be used by CATransaction.