(Feature #19882) Added validation User type shell property and unit tests Edit

Validates that shell property exists and is executable for the useradd provider.

@jeffmccune @adrienthebo A new attempt at Pull Request https://github.com/puppetlabs/puppet/issues/1553
This one passes the proposed case:

node 'agent' {
        package { 'zsh':
                ensure => present,
        }
        user { 'test':
                ensure => 'present',
                shell  => '/bin/zsh',
                require => Package['zsh'],
        }
}

And all the change of ensured from enabled to disabled. I tried to reach you at #puppet-dev but I guess the time difference is too big (Central Europe) and we have not matched.

Let me know your thoughts on this!