Adopting modern Objective C ( add 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.