Fixed the bug with cached class methods.

When get_class_methods(__CLASS__) was changed to get_class_methods($this), derived classes got a method list from the first instantiated MessageFactory, which could be the parent or a sibling class, so this is fixed now.
Adding test to ensure adding new message factory options works