Adopting modern Objective C ( Add the NS_DESIGNATED_INITIALIZER macro).

Clarify the distinction between designated and convenience initializers. This macro will help to have warnings from the complier when the initializations pattern/restrictions are violated.