Refactored data access layer

Using the unit of work and generic repository pattern for DAL now