* The live api is now split into two methods. One that fetches the data
and deserializes the json the second that creates the model instances.
These two methods are wrapped by the live method. The split is useful
when working with multiple threads. One worker thread that fetches
the data and the main thread that creates the instances.
* added LiveTopic model since the topic data in the live api doesn't
contain all the data that a Topic contains.
* makes sure that the _synced attribute is set when calling sync directly.
the fetch of the data is now in a separate method.
Needed when fetching the live stream in a separate thread.
If you use the normal live method there'd more api calls
to actually get the groups and topics.
simple implementation. we make a blocking call to the url.
if working in a GUI environment where the blocking call would
freeze the GUI. the caller would need to start the live call
in a separate thread and use a Queue to pass back the live data.