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 actually OK, because remember it is stored in the DB as:
`&lt;br /&gt;` so it is not actually decoded. And thus appears in the edit box as valid html that looks like html.

You can try this out with the board rules ext (I have been) since these functions are exactly the same. You can also hack the get_content_for_display to output the content using `htmlspecialchars_decode($content, ENT_COMPAT);` instead to see it display as expected too.