set render template opts so that they can be easily overridden

The previous implmentation made it more difficult to override with
custom opt values.  Specifically, the `:layout` opts was set using
`||=` so if you wanted to manually set it to `false` you couldn't.

This is all prep for reworking how rendering works and moving away
from Sinatra.

@jcredding another issue that came up porting an app - ready for review.
@kellyredding - I'm assuming this wasn't an issue when porting apps, but the previous implementation allowed a "deep merge" on the locals. With this implementation, if I pass a `:locals => { ... }` it will completely overwrite the `:view` and `:logger` values, whereas it would previously merge them with what I passed. We don't seem to be using it, but it seems to be a "nicer" behavior that we may want to keep.