(NC-90) Allow source installs using make
Use the pre_tar_task in build_defaults instead of overriding the tar task
(NC-90) Make installing from source work in integration tests
Merge pull request #35 from pcarlisle/nc-90-source-install

Nc 90 source install
(NC-143) Group hierarchy in storage.

Groups now have a "parent" key that names the group's parent. This key
must be set; groups are not allowed to exist outside of the hierarchy.
When the migrations are run, they insert a root group named "default"
that all others can descend from. This group is its own parent, and must
be the only group with this property.

Two new methods have been added to the Storage protocol:
`get-ancestors`, which returns the ancestors of a group starting with
its immediate parent and ending with the root group, and `get-subtree`
which returns the subtree of the group hierarchy rooted at the given
group. Each member of the hierarchy conforms to the HierarchyNode
schema, which ensures they each have a :group key and a :children key
that maps to a set of child HierarchyNodes.
Merge pull request #34 from aperiodic/nc-143-hierarchy

(NC-143) Group hierarchy in storage.
Pass the puppet_libdir into make in redhat spec file
(maint) Fix some integration test issues.

First off I just broke them after adding the parent field to groups and
not updating the tests to supply it.

Fix a race condition between our clojure webapp compiling and
registering with Jetty (which happens after Jetty begins to accept HTTP
requests) and our first integration test running that would cause the
tests to fail some of the time on my machine. The fix is to poll a real
classifier endpoint (specifically '/v1/environments') in the
`sleep_until_started` helper until it stops 404ing (indicating that
Jetty is routing requests to the classifier handler).
(maint) Add type annotation to get-ancestors*
(NC-144) Implement inheritance for groups.
(NC-144) Classify route does group inheritance.

Break it out into its own section since it was getting on the long side.
(NC-145) Validate parameters w/out inheritance.
(maint) Validate resources in http test.
(maint) Move class storage fns above group ones.

Since groups depend on pretty much all the other storage functions.
(NC-145) Validate hierarchy on group change.

Whenever a new group is created or a group is updated, the subtree of
the hierarchy rooted at the group in question taking into account any
modifications by the request being serviced is validated for missing
classes or class parameters. If any are found, the action is aborted and
a structured error message is sent to the user, with both
a human-readable message and a machine-readable listing of every missing
class and parameter that includes where the error was encountered and
which group originally defined it.

Add some acceptance for this behavior that tests both the behavior and
the content of the error message.
(maint) Don't treat root group specially.

Rather than special-casing on the name of the root group in the postgres
implementation, just return empty vector for any group that is its own
parent.
(maint) fix typo in test description
(maint) Improve schema validation error messages.

Schema validation error messages share the same :kind, :msg, :details
structure as hierarchy validation.
Schema validation now happens explicitly in the liberator action
function because
  1) the error from the implementation function contains the actual
     value of the first argument to the function, which contains the
     database credentials;
  2) the error from the implemantation function has extraneous
     information.

The ->client-explanation util to transform schema explanations into
something (mostly) JSON-serializable now iteratively explains errors
until no errors remain (since sometimes error explanations themselves
contain errors).
Change the schema validation fail middleware accordingly to, rather than
register encoders for schema errors, register an encoder for java Class
objects.

Update error message tests to enforce new structure for schema
validation error messages.
(maint) Escape angle brackets in doc headers
(maint) Improve malformed JSON error messages.

The response to a malformed JSON request now shares the same structure
as the other error responses. The `:kind` key will be
"malformed-request", the `:msg` will be "The body of your request is not
valid JSON.", and the `:details` key will have an object with two
further keys:
  1) `:body` - the request's body as received.
  2) `:error` - the error message encountered when trying to parse the
     body.