#43 make setVisible() none recursive and keeping state of child elements

Calling setVisible() on an element will now only change the visibility
flag of this element without modifying the child element visibility
state. Therefore when hiding a parent element and later showing it
again, the child elements visibility will not be changed.

Additionally a new isVisibleWithParent() method has been introduced that
checks the visibility of the element + the visibility of all parent
elements. This was necessary for DraggableControl which checks valid
drop targets bottom up including the visibility flag. The
DraggableControl will call isVisibleWithParent() now to make sure it
doesn't select drop targets that are visible themself but are not
actually visible because of some parent element being hidden.