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.
It's a problem with the way board rules is set up, in the ACP the set_ functions seem to be called on any ACP page, so if we made, for example, anchors be required in the entity method set_anchor, we get uncaught exceptions just the moment we try to add a new rule, before we could even create an anchor.

Maybe it won't be an issue here though, if we set this up from the start here and then the ACP will be written accordingly.