Port integration tests to pytest and docstring fixes

--HG--
extra : rebase_source : d1ee0b0cfc40c440b5cf4511817ec9ea8e625d27
Skip integration tests unless --ip is given

--HG--
extra : rebase_source : 26d448e41d160371b601342ad150ca1233c1157f
Singleton code

There should only be one SoCo instance for each IP address
Check that SoCo is passed a valid IPv4 address
Deprecate SonosDiscovery and replace with discover function

--HG--
extra : amend_source : c681e5561aa9d33875b3a3476c46254dd72e1dfa
Move relevant constants to discover function. Add __repr__
Fix typos
Do not pre-encode metadata template in tunein example
data_structures: Added class for queue item and modify core, does not produce its own metadata yet
Remove print code used during development
Fix unjoin error

unjoin only requires one parameter. Current version errors. This fixes
it. Cheers David
Merge pull request #89 from KennethNielsen/data_structure_queue_item

data_structures: Added class for queue item and modify core, no metadata
Small changes core and data structures tests after abondening using namespaces from ElementTree
Added music service data structures to support the music service plugins
Part 1 of the Wimp music service plugin
Simpler inheritance for data structures, doc and test update
Fixed bug in get_group_coordinator

This fix addresses issue #64. The get_group_coordinator() method
returns ‘None’ for a zone which is in Stereo mode, when invoked on a
device which is a slave.

The method also needs to be invoked on a device that is initialized
with an IP address that belongs to the zone. This should not be the
case.

I’ve refactored the method to get the topology of all devices and
extract the coordinator for the given zone name. This allows us to get
the coordinator IP for any zone from any initialized SoCo object.
Fixed bug in get_group_coordinator

This fix addresses issue #64. The get_group_coordinator() method
returns ‘None’ for a zone which is in Stereo mode, when invoked on a
device which is a slave.

The method also needs to be invoked on a device that is initialized
with an IP address that belongs to the zone. This should not be the
case.

I’ve refactored the method to get the topology of all devices and
extract the coordinator for the given zone name. This allows us to get
the coordinator IP for any zone from any initialized SoCo object.
Merge branch 'get_group_coordinator' of https://github.com/murali44/SoCo into get_group_coordinator

Conflicts:
	soco/core.py
Merge branch 'get_group_coordinator' of https://github.com/murali44/SoCo into get_group_coordinator

Conflicts:
	soco/core.py