Add simple workaround for empty file issue

commit 82fdb1b6 did not quite fix the problem.

We tried to do more complicated things but in the timeframe we had, ran
into some hard-to-trace issues on SLES of all things, discovered that
the codepath forked and java keytool commands which would blow up on
empty target keystores existed in two places, and tested stuff lots.

This fix is simple, kinda stupid, and should just work. Because there
are two codepaths that (previously) called keytool commands which could
error out on an empty target file, the new empty file hack is installed
in its own dedicated method.

We also revert the tmpfile method used previously for the simpler more
straight-forward algorithm:

  1. If a target file exists but is zero-length, stat it, then delete
     it.

  2. Run the java keytool command.

  3. If during step 1 a file was statted, apply the owner/group/mode to
     the (presumably) new file.

Conflicts:
	lib/puppet/provider/java_ks/keytool.rb
Fix Suse bug
Add defined? fix for Suse

The funky double-take check is because on Suse defined? doesn't seem to
behave quite the same as on Debian, RedHat. Wow. Combined with the issue
where IBM Java keytool won't take a password on stdin that took a long
time to track down.

Contributors:
Branan Purvine-Riley
Reid Vandewiele
Merge pull request #14 from reidmv/fix/empty_target_bug_rm

Fix/empty target bug rm