3.0 Start the ORM context

This set of changes is part of #2267 and adds a context class for single entities. I decided to start with single entities first as they are easier and I felt that managing a collection/single entity in one class might be too complicated. I'll refactor accordingly when I build out the collection support.

I've left in the ability to do `Articles.title` style inputs. After the conversation in #2754 I'm happy to remove this if people think it doesn't make sense to have it.