Merge pull request #36 from aperiodic/nc-145-hierarchy-validation

(NC-145) Hierarchy Validation
(NC-139) Set up SSL in integration tests and use it for puppet

This reuses the puppet agent's certs for the classifier. The puppet master now
uses SSL to speak to the classifier in integration tests, but general http
testing remains plain http.
(NC-139) Use SSL when acting as a client to puppet
(maint) Sort both sets of classes when synchronizing

This fixes a failure I was getting intermittently in integration tests. The
classes loaded from the db were not consistently sorted which would sometimes
result in failures in synchronize-classes.
Merge pull request #38 from pcarlisle/nc-139-ssl

(NC-139) SSL support
Stub puppet networking at the public interface

Adding SSL exercised a path that is only in newer versions of puppet, causing
spec failures. This happened because we stubbed
Puppet::Network::HTTP::Connection, which is not a public interface. Moving the
stub to the actual public interface fixes this.
Set up ssl dir in packaging
Make packages install properly on debian in tests
(NC-156) Add utilities for making map deltas.

The deltas represent the difference between two maps according to the
semantics of merge-and-clean, so they can be applied to the first map
using merge-and-clean in order to produce the second map.

This is used to implement the group-delta function, which is almost
identical but ensures the output always has a name, making it a valid
GroupDelta.
(NC-156) No 500 when PUTting an existing resource.

This involves overriding liberator's `put-to-existing?` decision to
return false in the case where the client is putting to an existing
resource that is equal (modulo id) to the resource submitted with the
put. This way we avoid doing the `put!` and just return a 200 with the
resource.
(maint) Describe `rule` key of group creation reqs

Apparently I forgot to add it to that section of the documentation when
I was updating it as part of moving rules inside of groups.