Small LVM fixes.

Secret pop quiz

Q: What characters are [in]valid in LVM VG names?
Hint: The + char is valid, but the # char is not.
Lower case use of k, not upper case, as per performance documentation.
Allow specifying brick device and other parameters in gluster::simple.

This patch adds support to specify the brick device values as a hash.
It also allows for separate defaults that apply to the whole cluster.
Make use of ping (actually, fping) optional in gluster::simple.

This is useful for environments that don't include fping.
Usage of fping (or similar) is still recommended to make you less likely
to get an error on volume creation if one host isn't up.
Use up-to-date version of the puppet-puppet module.

This incorporates a small fix to avoid installing puppet repositories if
they are already included by the provisioning system.
Be able to use puppet::vardir without requiring puppet::client.
Add in a custom sponge utility to break the dependence on the EPEL repo.
Directory variables should be nil if invalid.
Add support for volume set groups.

This adds support for setting volume set groups which are groups of
properties that are set all at once on a volume. This is managed in a
clever way, so that if the definition of what a certain group contains
gets updated by the package manager, your volumes will get updated too,
on the next puppet run.
Small fixes to avoid warnings.
Add advanced set group support for anyone without stock support.

This adds custom set group support for users that might not have the
feature (I think it might only exist in RHS) and also to users who want
to add their own custom groups! Please ping me if the stock groups gain
or lose parameters, or if their set values change!
Fix small bugs for setgroups.
Fix small bugs and warnings.
Add per volume support for brick chaining.

* Don't use this feature unless you _really_ know what you're doing.
* Managing chained volumes is much harder than managing normal ones.
* If some of the volumes in the cluster use this, and others don't, then
you'll probably have an even crazier time with management.
* Please verify my algorithm and feel free to suggest changes.
* Some edge cases haven't been tested.
* This patch breaks out brick layout ordering into individual functions.
Remove algorithmic brick layout ordering that happens in the fact.

Since different brick layouts are now implemented, it makes sense to
remove any remaining traces of the algorithmic work from the fact...
Fix small bugs with chaining.
Fix small chaining bugs.
Plug in volume layout and setgroups into vagrant.

This makes it easier to test and try out these features!
Silence unnecessary warnings if we know they're unnecessary.
Improve brick count input and parsing.