Refactor video model to include slug property

This is to store the url slug of the video, used for viewing specific
records.
Add video table

This commit includes the core of the video table object along with the
first function and accompanying test.
Refactor the video data model to include a payment requirement id

This is required to distinguish free from paid videos. The video table
was refactored and a new payment requirement table was added. The video
model was also changed along with an accompanying test.
Add new function to retrieve all videos sorted by reverse date order
Refactor the fetchBySlug function

now the function has documentation along with a simplified return
construct.
Add the save method on VideoTable

The method was implemented along with accompanying tests.
Merge branch 'feature/add_tables' into develop