Revert "Revert "Merge branch 'stschulte-ticket/master/fixup_expiry'""

This reverts commit 1ddcb5e511e131645cfa89305784f66427374287.

Conflicts:
    spec/unit/provider/user/useradd_spec.rb

The original commit "Merge branch
'stschulte-ticket/master/fixup_expiry'" was reverted because it caused
failures on ruby 1.8 because Date.next_day and Date.prev_day are not
public in ruby 1.8 (will the methods are publicly available in ruby 1.9)

Revert the revert and reinstall the original commit to be able to fix
the issues.
Fix user expiry failures on ruby 1.8

Date.next_day is private on ruby 1.8 while it is public on ruby 1.9

Convert the expiry to a date in a different way that works both on ruby
1.8.7 and ruby 1.9
Fix user expiry on Solaris

The useradd provider can manage the expiry of a user account. To remove
an expiry you can use `usermod -e '' alice` and on Solaris the man page
states that providing `' '` would cause usermod to remove the expiry.
This happens to be not true at least on Solaris 10 so treat Linux and
Solaris the same.

However setting the expiry date to a real date is different on Solaris.
While Linux only accepts the date in the format YYYY-MM-DD, Solaris
accepts multiple different formats but %Y-%m-%d is not one of them. So
use the format %m/%d%/%Y when on Solaris which is also used in the useradd
manpage (and did work on test box)
Merge branch 'stschulte-ticket/master/user_expiry_solaris'd closes #1424

* stschulte-ticket/master/user_expiry_solaris:
  Fix user expiry on Solaris
  Fix user expiry failures on ruby 1.8
  Revert "Revert "Merge branch 'stschulte-ticket/master/fixup_expiry'""