Attributes of OTBObject to be abstract properties

OTBObject attributes are used in its methods. However they are not definer in the abstract class, but in the child classes (like App or Output). For now the attributes are "defined" here

It would be more explicit to define them as abstract properties in OTBObject: This way the implementation of child classes are eased for users.

Or, we could define explicitely getters and setters in OTBObject, this way it might be more transparent for the user?

Edited by Rémi Cresson