3.0 context improvements

As part of #2667, I started working on `FormHelper::create()` and noticed a few methods I needed from the context classes were missing. This set of changes fixes those gaps by adding primaryKey retrieval and whether or not the form is for an update.  Both of these are required for `FormHelper::create()` to continue behaving as it does today.

I've also added a NullContext. This class will be hooked up as the fallback context if the form's 'model' is not an ORM and doesn't smell like an array context. If you think this is a bit silly let me know and I can make the array context the fallback.