Finishing touches on the framework with customers as primitives

* Finished the framework to be in a functional state
* Added a Customers primitive
* Added a Customer primitive
* Added more tests
* Re-arranged the directory structure
* Introduced data validation
* Updated the README