Use a more liberal hash for carrying template parameters

Using OpenStruct to provide access to the `configuration` data in broker
templates was convenient, but limited: it gave a pleasant method based syntax
for reading the content, but it didn't provide the conveniences like
enumaration methods that a real hash would.

This adds the `hashie` gem to the project, and uses that to construct a custom
Hash subclass for the purpose -- providing convenience readers, and
indifferent access where both string and symbol keys work as expected.

This avoids rebuilding the same sort of infrastructure ourselves, while
providing an awesome DWIM experience to authors of broker scripts.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Rewrite Puppet broker to use Puppet Labs package repositories

The original Razor Puppet broker installed Puppet from a gem.  This,
unfortunately, was kind of a rough user experience -- because the gem didn't
do much setup for users, and because it was awfully hard to excise the gem
version if you wanted to use a real package manager.

Since Puppet Labs provides, and recommends, our own package repositories for
installing the Puppet Community Edition, our broker should follow that advice.

This implements that -- rewriting the broker install script to support our own
package repositories as far as possible.

Presently that support is limited only to Linux flavours, but there is no
reason why it can't reasonably simply extend to working correctly on other
platforms in future.

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