Add entity class and interface

I can remove tests from the PR if they make it too big, but I think they may help show the entity methods in action.

The real focus of scrutiny on this PR really should be in the page class and the migration for the table setup.

1. Outstanding issue to figure out: How to enforce unique "route" names.
More like, I don't know how to deal with this (and the same issue exists for board rules anchors). It will most likely have to be done in the admin controller because doing it here means it will be run even when we're just getting data from the DB, so it will have false positives, because these set_ methods get called often, not just when saving new data to the db.