Refactor: Encapsulate model into a constructor with a prototype

Previously, we had to require different components of our model within
its spec. It felt a bit clumsy and could potentially have grown into a
long list of requires. This was a smell that led us to encapsulate the
model in a nicely self-contained instantiatable constructor.

What we learned:

* Constructors in JavaScript
* Prototypes
* Instantiate objects in JavaScript
* The special `this` variable