NC-122 Add more rule operators.

Add regex match and numeric comparison operators. The regex operator
compiles the string directly to a java.util.regex.Pattern. The numeric
comparison operators

Modify the Rule schema to only accept rules with a :when field that
looks like a valid rule condition (i.e. a three-element vector with
a known operator and two strings, or a two-element vector that has
a "not" first and then a valid condition (which can itself be a further
negation).
(NC-107) Update environments of groups.

Just do a whole-sale update of the environment_name field in the group,
group_classes, and group_class_parameters tables. Foreign-key
constraints will blow up if the classes the group sets parameters for
don't exist in the new environment, or do exist but don't have all the
parameters that the group sets. In the future, this would be a good
occasion to refresh our view of puppet's classes for the target
environment.
(NC-107) Acceptance test for group env updates.

Also test that when updating a group's environment fails, we get an
message in the response telling us what is missing from the database
that we assumed was there.
Merge pull request #20 from aperiodic/nc-122-basic-operators

NC-122 Add more rule operators.
(packaging) Update version determination for new packaging tools

Previously one could access "@" variables supplied by the packaging tools
without scoping them in any way. This changed, for sanity's sake, but alas,
this means some projects have to change with it. This commit also updates the
Rakefile to fall back to `git` and then a string in the case that the packaging
repo is not present.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Merge pull request #22 from MosesMendoza/packaging/master/update_version

(packaging) Update version determination for new packaging tools
Simplify constructing the uberjar name

We can just skip putting the version in the uberjar name and this simplifies
our packaging task.
Merge pull request #24 from pcarlisle/uberjar-version

Simplify constructing the uberjar name
Merge pull request #21 from aperiodic/nc-107-environment-updating

(NC-107)  Allow changing group environments
(NC-123) Boolean expression rules.

Allow rules to be full-on boolean expressions. Conjunctions and disjunctions
must contain at least one term.
Merge pull request #25 from aperiodic/nc-123-booleans

(NC-123) Boolean expression rules.
(NC-137) Add group ids.

Groups now have an id field, which must be a random (version 4) UUID.
Groups can be retrieved, updated, or deleted via their ID rather than
their name, but must be created via their name. When creating the group,
the entity returned in the 201 response should be the group as stored
(i.e. with the UUID). In order to accomodate this, the Storage
protocol's create-* functions must return the object as created, and
mock Storage implementations in tests should follow that.

Add Acceptance tests for using UUID in place of the group name when
updating, retrieving, or deleting.

Rplace the get-group and delete-group methods of the Storage protocol
with get-group-by-name & get-group-by-id and delete-group-by-name
& delete-group-by-id, respectively, in order to be explicit about the
identifier used to select the group.

Since the group route differ from the other CRUD resource routes due to
the need to distinguish between the cases where name or UUID is given in
the URI, the group route now uses its own handler rather than one
created with http/crud-resource. This allows the crud-resource function
to be slightly simpler, and it has been renamed crd-resource since it
does not allow updating.

Add a schema for the deltas passed to update-group, to guarantee that
they have one of either :id or :name keys.

Modify the uuid? utility to recognize UUIDs, and add ->uuid to coerce
values to UUIDs when possible.
(NC-137) Update API docs for group UUIDs.

Note where the UUID can be used interchangeably with the group's name.
Merge pull request #27 from aperiodic/nc-137-group-guids

(NC-137) Group IDs
(NC-106) Acceptance test for group deletion
Merge pull request #28 from aperiodic/nc-108-delete-groups

(NC-106) Acceptance test for group deletion.
Add method to render seqs for liberator.

Our method uses cheshire, rather than clojure.data.json, since cheshire
knows how to serialize java.util.UUIDs to seqs.
(NC-136) Nuke ini utilities, use kitchensink's.
(NC-136) Update to TK 0.3.2 so we can use new KS.

Updating KitchenSink brings in a new version of clojure.tools.cli with
incompatible semantics that broke TrapperKeeper, so update to a new TK
that uses the new clojure.tools.cli so we can use the new KS that has
the deep-merge utility.

Change the line that the acceptance test waits for to decide that the
server has started, since the new TK WebserverService has slightly
different output.
Merge pull request #29 from aperiodic/nc-136-utils

(NC-136) Update TK, use KS utils