Refactor/in memory models and synchronous getters

NB: clear storage. so far everything works fine, online and offline. though there are lil Todos to be complete.

ALSO: i noticed that most time we don't used factories to access objects, like instead of using ProductTypeFactory.get, getAll(), storageService is used this defeats the aim of having factories, cause Factory attaches the complete object and does some validations etc does not exist at storageService layer, hence we end up having objects in inconsistent state(sometimes with object, sometimes with uuid). also since this project has grown so big, before creating a function pls make sure it does not exist already al discuss with other to be sure. found out we have a lot of code duplication, functions with different names but do similar things if not exactly same.

thanks.


from angular doc:


    If no destination is supplied, a copy of the object or array is created.
    If a destination is provided, all of its elements (for array) or properties (for objects) are deleted and then all elements/properties from the source are copied to it.
    If source is not an object or array (inc. null and undefined), source is returned.
    If source is identical to 'destination' an exception will be thrown.

i dont want an exception to be thrown if both src and des are same.
i dont want des properties to be deleted. because it can have a property that the src does not have which we dont want to be deleted,

so this just updated des obj properties that src has.