(#8193) Support new keytypes for ssh_authorized_key

Recent versions of openssh (at least openssh 5.8) support the following
keytypes in in the authorized_keys file: ecdsa-sha2-nistp256,
ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, ssh-dss or ssh-rsa.

Add support for ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 and
ecdsa-sha2-nistp521.
(#8193) Support new keytypes for sshkey

Recent versions of openssh (at least openssh 5.8) support the following
keytypes in in the authorized_keys file: ecdsa-sha2-nistp256,
ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, ssh-dss or ssh-rsa.

Add support for ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 and
ecdsa-sha2-nistp521.
(#8193) Add unit tests for new ssh keytypes

Add unit tests to prove that the ssh_authorized_key provider can parse
all different keytypes. This currently shows that the provider lacks
support for ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, and
ecdsa-sha2-nistp521 keys.
(#8193) Add support for new ssh keytypes in authorized_key provider

The provider now correctly detects lines that describe an
ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 or ecdsa-sha2-nistp521 key.
(#12479) Don't make undef regexp match as the string undef.

As part of commit 53869e99 we did work to make the behaviour of variables that
were explicitly `undef` at least somewhat saner.

One unintended side-effect of this was that we started matching `undef` as the
literal string `undef`, not as the empty string, and not "not matching".

Either of the later would have been sane things to do; this fixes that by
picking "match undef as empty string".

That is for consistency: we already match the *literal* empty string as equal
to undef, so it makes sense to treat it the same way for a regular expression.
(Debate on that point is welcome elsewhere, but we should change literal and
regexp matching the same, consistent way if we change it anywhere.)

Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
(#13296) 'unless' as a parameter inside a resource causes syntax error

Add test to validate that unless gets parsed properly if a parameter
Add case to grammar to PARAMETER for UNLESS => EXPRESSION
Regenerate parser from grammar
(#13380) Cron acceptance tests don't ensure cron actually installed

Add cron package resource to cron resource acceptance tests
Merge pull request #595 from jeffweiss/ticket/2.7.x/13380_cron_acceptance_tests_break_when_no_cron

(#13380) cron acceptance tests break when no cron
Merge pull request #470 from daniel-pittman/bug/2.7.x/12479-bad-undef-vs-regex-match-behaviour

Bug/2.7.x/12479 bad undef vs regex match behaviour
Merge pull request #597 from stschulte/ticket/2.7.x/8193

ssh_authorized_keys should support new key types
(#13296) allow any keyword as resource param name

Add list of keywords to grammar.ra
Regenerate parser from grammar
Add parser tests for each keyword as a parameter
Add unless to keyword list in lexer tests

Prior to #13296, the resources did not allow parameter names to be
language keywords.  With this commit, resources can use any of the
keywords as a parameter name.

For example this is again legal:
exec { '/bin/echo foo':
  unless => '/usr/bin/false',
}
Merge pull request #589 from jeffweiss/ticket/master/13296_unless_in_exec_causes_syntax_error

(#13296) 'unless' as a parameter inside a resource causes syntax error
Merge branch '2.7.x'

Conflicts:
	lib/puppet/daemon.rb
	spec/unit/daemon_spec.rb
	spec/unit/parser/ast/leaf_spec.rb
	spec/unit/provider/package/dpkg_spec.rb
	spec/unit/util/settings_spec.rb
Merge pull request #601 from cprice-puppet/master

Merge 2.7.x
Allow passing extra options to the execute

In order to allow the macports execution to have the normally not
allowed HOME environment variable the Provider.commands() method has
been extended to allow specifying the options to pass through to the
execute call
Added doc of the command parameter
Simple complete command wrapper for providers

Will be used for keeping track of commands registered in providers.
Puppet::Provider constructs Command objects

Delegation to a command object to handle executing a command.
Deprecated make_command_methods

This is a private method that should not be exposed.
Delegate all commands to Puppet::Provider::Command

Command execution for providers is now all coerced into
Puppet::Provider::Command.