Allow override of template_name in __init__() and render().
Ensure that a template_name 'override' of `None` doesn't override.

This is important for cases where e.g. widget.render() might be wrapped by
another function that accepts a `template_name=None` optional argument; it's
nice if the wrapper function can just pass that on directly rather than having
to check for `None`.
Fix flake8 complaint.
Add documentation of template_name overrides.
Adding documentation for the Input.template_name attribute.