Detect and report out-of-sync migrations via the API

When the Razor code and database migrations are out of sync, significant
problems can occur.  This adds code to detect when this situation has shown
up, report it, and refuse service to all callers.

For the client this will result in an error message to the user, including
instructions on how to fix the problem.

For MK images, etc, it will result in an error that they will observe and
retry in the near future; this is the best we can do, since we can't be sure
that the changes have not altered the behaviour they should undertake.

https://tickets.puppetlabs.com/browse/RAZOR-158
Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Add `locales` data and template to packages

The locales directory will be shipped, with both the PO file template, and any
PO files that we have included that support translations.  This supports our
translation efforts.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Fixing `create-repo` documentation
Allow `conform!` in commands

In order to change the client=>server API, there needs to be some backwards-compatibility in effect. This `conform!` capability will allow a command to decide which data mutations it can perform on its data before running its validation.
Add `element` and `references` to array validation

In order to facilitate some shorthand syntax (`["abc"] => [ {"name": "abc"} ]`), arrays will need to hold datatypes besides just objects and also assure relational integrity. The type `element` (aliased as `elements`) will be used to denote a basic datatype in an array. `references` will work like it does for hash. This includes a change to hash attribute default behavior, where now if no reference name is provided, it defaults to 'name', rather than the property's name. This was done to establish a clearer convention.

Part of this change is also moving incorrectly located tests for array attributes, which were previously in the array schema spec file.
Allow shorthand in `create-policy` command

Create Policy is a representative example of the shorthand involved. This converts create-policy attributes `repo`, `task`, `broker`, and `tags` to no longer need an object/hash with just the "name" property defined. In order to preserve backward-compatibility, this command now overrides `conform!`. The method upgrades commands written in the old syntax to the new syntax.

There was a previous regression where create-policy would not create tags that specified a `rule` array. This has been added back.
Shorthand references in other commands

`create-repo` and `move-policy` need the same updates for references from just a string rather than the string in an object's `name` property.

This was a good opportunity to fix up and refine the spec tests for both commands.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-192