Ability to specify a class method as an objection_initializer

I implemented ability to have a class method as `objection_initializer`. Also this pull request contains couple of changes that I would love to hear someone's opinions on.

1. I added an explicit `__autoreleasing` ARC qualifier for the returning instance since ARC was getting sometimes.
2. `objection_initializer`'s method result is being stored in the returning `instance` variable. This one was also aimed to fix an edge-case when initialization method wouldn't return the same instance as `alloc` (which is obviously is not a recommended practice). Also it address all cases when a static factory method is used.

Please let me know if approach I used seems valid to you. 

Thank you.