Layout specification and discovery should follow the same behavior as partials

Fixes #1047
- why is `viewEngine` allowed to be `null`?
- why is `page` newly allowed to be `null`?