Param validation

This changeset adds validation of all `concat` and `concat::fragment` parameters.  In addition, the dead `gnu` param is removed from `concat` and the `warn` param to `concat::fragment` has been split into `warn` and `warn_message`.  `concat::setup` is now considered a private class and directly including it into the manifest will cause a `fail()`.

It also adds fairly comprehensive rspec-puppet tests for the entire module.  There are several pieces of logic that are suspect but the tests were written to model the present behaviour, even if that isn't ideal.  Test coverage for the facts is notably absent as is a cleanup of the documentation.