Find repo files case-insensitively

One of the fun quirks of the ESXi installer is that it uses a pure ISO9660
filesystem on the CD, rather than anything modern.  That actually supports
only upper-case characters in filenames.

Linux maps those to lowercase when mounted, but libarchive gives us the gory
truth -- and no easy way to detect that this is an ISO9660 only image.

So, because case is fun, and because many popular platforms are case
preserving but case insensitive, we treat repo files case insensitively.

This should, I think, match exact case first, then find alternate case sets,
but ultimately it makes it possible to get the expected file for ESXi.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Support raw installer files, as well as templates

Unfortunately, booting the ESXi installer requires that we chain through
pxelinux -- it provides a support environment that allows the multi-boot
kernel that ESXi uses to be loaded correctly.  We can't just boot that,
though, because pxelinux without iPXE doesn't support loading data from
a URL.  (At least, in the versions we use.)

Consequently, we end up chaining iPXE => pxelinux => mboot.c32 and the rest of
the installer.  This requires that we serve pxelinux.0 -- a binary file --
from our installer.

That was previously somewhere between ugly and impossible: templates are
required to be valid UTF-8 text, which means that for this to work we needed a
base64 encoded version of the pxelinux.0 binary, wrapped in a template that
would decode and emit the binary version at runtime.  Ugh.

This implements serving raw files from installers.  You have to ask for them
explicitly, and cannot access raw templates using this; we blacklist those.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
ESXi 5.5 installer

This implements an ESXi 5.5 installer, capable of automatically installing to
the first local disk.  Roughly speaking, this is identical to the ESXi
installer in the older Razor.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Improved logging to improve debugging

This adds and moves a handful of logging statements around the product, to
improve our logging.  These are probably not the most efficient possible
implementations, but they make it easier to identify what is going on with the
product at a glance.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
test for fixed case filenames first...

Signed-off-by: Daniel Pittman <daniel@rimspace.net>