config: move template rendering functions to template.py

Moved Cheetah and Genshi rendering functions to their own file and added a
'name' rendering type which defaults to Cheetah for now.

Templates can specify the rendering engine they wish to use by placing a
line such as `# poni.template: engine` in the template.
template: add support for the Mako template engine
config: render filenames using a custom rendering function

This removes a hard dependency on Cheetah, but maintains it as a default
rendering engine when no other engine has been selected.

The custom name rendering function does basic variable expansion similar to
a simple Cheetah template.
aws,eucalyptus: use LooseVersion to check boto

Trying poni with latest boto which is 2.11.
aws: release previously allocated eip

If an instance was created with eip=allocate mode
and new Elastic IP was allocated, it makes sense to release it
on cloud terminate.
libvirt: use lxml for xml generation

This adds a new requirement for cloud_libvirt, but also simplifies
and sanitizes the way we build the XML descriptions.
libvirt: use lxml for xml parsing
Merge remote-tracking branch 'oss_github_saaros/template' into template4
Merge remote-tracking branch 'egirshov/loose-version' into template4
Merge remote-tracking branch 'egirshov/release-eip' into template4
Merge remote-tracking branch 'oss_github_saaros/xml' into template4
templates: rendered template cache in plugins

Store rendered templates (full rendered text output) in
plugin-specific caches. Validity check performed every time
the rendered output is required.