Topology fixes

@stefankoegl beat me to it and merged the PR before I had committed these changes.

These make the code just merged from #136 a lot more efficient, and also add the following properties to SoCo instances:

`all_zones` : a generator returning all zones
`is_bridge`: True or False:  Is this a bridge
`visible_zones`: a generator returning all visible zones. Convenience for `[zone for zone in soco.all_zones if zone._is_visible]