Class and spec for preamble handling.

Based on vcloud-core's preamble handling in Vcloud::Core::Vm.
Preserve vcore behaviour of an empty preamble on error.
Ensure that preamble class is invoked during customization.
Try to fix specs on Travis: optional whitespace.
Remove defunct FIXME.

The old vcore behaviour of returning an empty string is currently preserved in VmOrchestrator.
Don't cache generate's output, kill output method.

Altered following PR comments from @mattbostock.
Explicit before(:each) following PR comments.
WIP: permit missing/empty vars.

This allows for scripts to be passed through directly to the post-processor, without templating.
vm_config[:bootstrap], not vm_config[:bootstrap_config]
PR feedback: No bootstrap config means no preamble processing.

Just pass an empty string to Fog for the host customization.
Minor typo fixes.
No need to rescue preamble exceptions now.

We want these to bubble up if we hit them.

Following PR review with @mattbostock, preamble processing is no longer triggered if bootstrap configuration is absent (thanks to @rjw1). Other issues should be raised to the caller.
Validate vapp config, raise errors early.

Missing vapp bootstrap preamble script variables, or the file not being found, raise exception for the user early on, rather than defer until VMs are already running.
Log if preamble is given without variables to template in.

This is an acceptable state - use may want to just supply a script, or post-process only (although the script currently will still go through ERB, so watch out for that).
Still, it might bite some folk, so point out the omission of variables at info level.
Merge pull request #51 from bazbremner/move_preamble_handling_from_vcloud_core

[#66849308] Move preamble handling from vcloud core