[common] added initial interface for base element class.

It is intended for subclasses not to be instantiated directly but
through the factory methods, so hide constructors as thorough as
possible
[misc] added interface for factory element creation methods