Add extra datatype integrity test

For https://tickets.puppetlabs.com/browse/RAZOR-135
Add "lower" & "upper" matcher functions

To facilitate case-insensitive string matching for instances like MAC addresses, functions "lower" and "upper" have been added to the matching language. This will allow, e.g. `["=", ["upper", ["fact", "macaddress"]], "F0:1F:AF:D8:F2:A6"]`

Fixes https://tickets.puppetlabs.com/browse/RAZOR-89
Fixing stock tasks

Some stock tasks required fixing due to the migration from RAZOR-154. This file movement means the user does not need to rename any tasks.
Link repo to task

The association between a repo and a task should not be indirect through the policy. Repo requires an association to task. Policy has an optional association to task, which will help with backward-compatibility.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-143
Razor version string must not include a newline

An undetected bug meant that some razor versions could include a newline when
generating from git metadata.  This hadn't caused any practical problems until
we started using that as part of the etag for cache control.

This fixes the issue, and adds a test to try and catch this if it crops up
again somewhere.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Implement GET on commands returning JSON data

This implements the bones of the protocol to allow our client code to fetch
data about commands dynamically from the server.

https://tickets.puppetlabs.com/browse/RAZOR-183

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Add generated help text to the command data

Now that we have a basic protocol for fetching data about commands, we can use
that to expose the documentation added to them to the world.  This commit adds
the basic infrastructure for rendering help text as markdown, and wires it up
to the public API.

https://tickets.puppetlabs.com/browse/RAZOR-183

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Implement a basic full help template

This adds a basic template to cover the help output, and extends our help DSL
to cover a few more details that this showed we needed.  This is hardly
optimal, but is a reasonable starting point for rendering the help text
for our commands.

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

The rename from "recipe" to "task" affected a few extra instances in preseed files.
(RAZOR-188) Add a refresh-repo command

This is useful in the following scenarios:
   - The content of the repo source has been updated and needs to updated on the razor server
   - A new razor server connected to an existing database (used by existing razor servers) is brought online.  This command will 'refresh' the repo onto the new server without wanting to manipulate the database.

This works by having the unpack_repo job remove the destination directory and recreate it before extracting the repo archive.  The refresh method simply publishes the make_repo_accessible job.