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.
No. Setting the content_enable_html() or  content_disable_html() should be last, so it can be certain it overrides the BBCode/etc. settings when enabled. But on disable, we wouldn't want to override what the user may have wanted.

Like, if the user wanted to do BBCodes only:
```
->content_enable_bbcodes()
->content_disable_smilies()
->content_disable_magic_urls()
->content_disable_html()
```