Add support for extras dict in template definitions
Add support for extras dict in template definitions

A template definition may now include an element, 'extras', which
itself is a dict containing variable names and their values. The
extras will be added to the fabric env vars before evaluating the
template.

An extra variable's value is cast as a string, unless it is a
string which references a full python module import path; if the
latter, the module will be loaded, and the method will be invoked,
its return value being added to the template variables.

Example:

TEMPLATES = [
    {
        # ...
        "extras": {
            "hostname": "cotton.fabfile.utils.get_hostname"
        }
    }
]

evilchili/cotton