Support puppet client for FreeBSD

Some pieces of the puzzle are missing for being able to manage puppet in
FreeBSD.

 * Add a default puppet client config template for FreeBSD

 * In FreeBSD, puppet.conf is not in /etc/puppet/ so let's provide a
   value for this variable in init.pp.

 * The rc script for starting and stopping puppet is not located in
   /etc/rc.d so let's signify this to Service[puppet]

Signed-off-by: Gabriel Filion <lelutin@gmail.com>
Support FreeBSD for the puppet master

The puppet master has one additional config file that needs to be placed
in a different folder under FreeBSD.

Signed-off-by: Gabriel Filion <lelutin@gmail.com>
FreeBSD: install packages via puppet itself

The linux class installs puppet and facter via puppet itself.

Chances are that they are already installed, since you need puppet
before you can run puppet.

_But_, it enables the $puppet_ensure_version and $facter_ensure_version
features (forcing the installed version). So let's do the same in
FreeBSD.

Signed-off-by: Gabriel Filion <lelutin@gmail.com>
Include the OS-specific class for FreeBSD

The FreeBSD class was previously defined but not included by the puppet
class in init.pp

Signed-off-by: Gabriel Filion <lelutin@gmail.com>
Fix ssldir value for FreeBSD config

The default ssl directory in FreeBSD is /var/puppet/ssl, not
/usr/local/etc/puppet/ssl

With the previous value, puppet would refuse to run starting from the
second run, stating that the certificates do not match.

Signed-off-by: Gabriel Filion <lelutin@gmail.com>
Move $puppet_default_config_dir to the puppet class

We'd like to use this variable in the 'puppet' class since we're
defining the path to another config file, there.

Since puppet::puppetmaster inherits the puppet class, the variable will
be defined appropriately. Just to make sure we get the value from the
right place, let's also use the qualified variable name.

To avoid useless repetitions in the variable name, change the variable
name from $puppet_default_config_dir to $default_config_dir.

Signed-off-by: Gabriel Filion <lelutin@gmail.com>
Add partial freebsd cron job support

The puppet::cron::freebsd class is almost identical to the
puppet::cron::openbsd one, but there is no cron job to remove, and the
/etc/rc.conf mechanism doesn't exist yet for FreeBSD.

Signed-off-by: Gabriel Filion <lelutin@gmail.com>
Fail when trying to ensure an installed version on FreeBSD

The two package providers for FreeBSD are not able to ensure that a
specific version of a package is installed because of how ports/pkg_add
work. They can only ensure the version from the specified FreeBSD
release is installed or absent.

For more information, see:

http://docs.puppetlabs.com/references/stable/type.html#features-4

To make the class easier to understand, let's not do something that
users don't expect when they're requesting installation of a specific
version. We'll explicitly fail and tell users why so that they can
adjust how they use the class/module.

Signed-off-by: Gabriel Filion <lelutin@gmail.com>
implement fix for cron file being put in place even when you do not include puppet::cron.

The module should make sure that the cron file is not there if you aren't using
the cron method, otherwise the daemon and the cronjob could both run.

Used suggested change from jcharaoui in #3513
Fix probable typos.
Merge remote-tracking branch 'lelutin/freebsd' into shared