DataLoader abstracted 
Major changes to DataLoader. Currently it hosted loading data from three
different sources:
1) local database
2) web service
3) search result
This is changed to be an abstract class. All classes which can deliver
data need to extend it.
Using the interface (which acts as an event trigger) it DataLoader can
tell its listeners that new data has arrived. 
This commit also extracted code from original DataLoader and provided 3
new classes:
1) DbDataLoader - extends DataLoader and loads the data from local
database, when data is ready using the DataLoaded method it tells
DataLoder to send this data to its listeners. 
2. WsDataLoader - all the previous code for calling web service, data
synchronization etc. is in this class. Also, when data is ready it calls
DataLoaded method. 
3) SearchDataLoader - previously a method, now became a dedicated class
in charge for collecting the search result from local database. 

MainActivity is changed to implement OnDataLoadedListener. This listener
is used to fill the list with data, when the data (is available /
arrived). Also, the main part checks weather the local data is
available, if not, it gets it from web service like it did before,
however with fewer lines of code in a more architecturally elegant
fashion.