Refactor JSQMessageBubbleImageFactory to allow custom images

@jessesquires 

Implemented the refactor using your feedback, and even added two unit tests to exercise the custom image flow.

I wasn't sure if you wanted the -[init] to appear in the header, but since that will be how 90% of everyone uses the factory, I decided to add it.