Add model structure, along with shoulda tests

Model structure as laid-out in UML has been implemented. Thoughtbot
shoulda matchers have been used within RSpec to test relationships and
simple validation.

Some validation for enums and more complex fields such as URL has been
done, although this is limited to in built validation. No custom
validators as of yet.