fsm: Use lowerdev_for.count instead of shared_users

Rename lowerdevs to lowerdev_for: an array containing workers,
for which current workers is a lowerdev
fsm: Respect ifdown and ifup dependencies separately

Pull in masterdev in case of non-ifdown operation.
fsm: ni_ifworker_can_delete() ignores persistent
fsm: Do not fail completely on broken configuration (bnc#883203)
fsm: remove unused variable from workers struct
fsm: Add lowerdev variable to avoid backward reference
fsm: Update ni_ifworker_add_child() to work with lowerdev
fsm: Accept lower|master devs on ifdown if no dep