add back delegate as second arg to createInstance() && clean up delegate/ref semantics, specifically:

-assignment to bindingDelegate no longer causes instance production
-assignment after instantiation has begun causes *future* instances to be affected.
-the binding map is now stored on the template (and checked to make sure it maps the correct content) (as opposed to the content -- which could have been shared between templates with different delegates).

R=arv
BUG=

Review URL: https://codereview.appspot.com/52880043