More Flexible Encapsulation for ExtensionMetadataFactory class

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