More Flexible Encapsulation for ExtensionMetadataFactory class

1.) Removed final declaration from the class definition.

2.) Made getDriver() method protected rather than private so children can override/extend functionality.