Simplify property accessors
created new Opticalproperty trait to share the functions "name", "node_type" and "inverted" between nodes annd only define them generically within this trait.
removed these functions from the optical trait, such that the functions do not have to be defined for each node.
Addtionally added the "inverted" property for sources, but throw an error if someone tries to change the inversion from fals to true.