fix render method to properly set data

it's possible that the data value is a falsy value like null, false, 0, or an
empty string. So if that's the case, we still want to set the data value on the
dynamic template.
fix destroyRegions bug

In the yield function, if the dynamic templated had already been
inserted, destroy it and create another one.

Git rid of destroyRegions because it didn't do what was expected. For
example, if the layout template was originally "LayoutOne":

// change it to undefined thereby deleting all rgions
layout.template(undefined);

// set it back to the original so in flush, Spacebars.include doesn't
// re-render
layout.template("LayoutOne");

// this will render to a DynamicTemplate (region) that hasn't been
// inserted into the DOM! Because insert happens in {{> yield}}
layout.render("PageOne');

Solution: Never delete regions, but call their destroy() methods if
creating a new view.