Added Repository and Unit of Work design patterns functionalities.

In Domain layer, generic database operations were added using
Repository and Unit of Work design patterns. The simplicity of
GenericRepository gives flexibility to extend and add new
functionalities related to the database access.