Node.canonicalize_hw_info: strip out whitespace

Treat hw_info values that are only whitespace as not present. They clealry
have no value in discriminating between nodes.
* Gemfile.lock: no functional change; regenerate with what bundler wants
Include installer in policy details
Validate installers in specs against a JSON schema
Installer serialization: include a reference to the base installer
* Gemfile.lock: update multi_json, sequel, and yard to latest
Matcher: fix typo in typing the 'num' function
Add a util file for migrations

Even though migrations should be self-contained, there are some things we
want to share, e.g., the regular expressions that express our notion of
what a name or URL is.

Since migrations might run individually, or several together, and constants
defined in one migration are only available if that migration is run, we
need to put these things into a separate file.
Support for 'remote' repos

Repos can now either have a 'iso_url' or a 'url' property. The former
behaves exactly as it always has; the latter makes the repo simply a
pointer to a resource that is maintained outside of Razor.

Fixes https://github.com/puppetlabs/razor-server/issues/53
* Gemfile.lock: update archive to 0.0.4

Fixes issue https://github.com/puppetlabs/razor-server/issues/48
Make Razor::Config not a singleton; store it in a class variable in Razor instead

Having Razor::Config as a singleton makes testing very awkward. Since we
want people to refer to the config via Razor.config anyway, there's no real
gain from having it as a singleton, just pain when trying to test it.
Razor::Config: successfully load even empty configs

The missing validation of empty configs will follow

Fixes https://github.com/puppetlabs/razor-server/issues/52
Razor::Config: validate the facts.blacklist
Razor::Config: validate repo_store_root
* config.yaml.sample: remove unneeded repo_service_uri setting
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>
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>