set render layout opt only if it is missing from given opts

This updates how render options are defaulted.  Now the layout opt
will only be defaulted if it is missing.  Previously, the `:layout`
opt was set using `||=` so if you wanted to manually set it to
`false` you couldn't.

This also updates the tests to validate the "deep merge" behavior
on render locals.  This test was missing and a previous attempt
at this PR broke that behavior unknowingly.

This is all prep for reworking how rendering works and moving away
from Sinatra.