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.
Where was this regular epression from? Doesn't this match only all symbols?

Also, you shouldn't use !preg_match, preg_match returns the place where a match was found, which could be 0; !== false is what you would want to use.

Checking for no route should be in a separate statement for clarity.