added description interface to extend it

I've added an interface at the Description object and changed as protected its attribute.
I do that because in this way it's allowed to extend the description object. For example if I want to add a different way to fetch the operation, I can pass as an option another method for "defaultCommandFactory" that will receive my custom Description object that implements the DescriptionInterface.