(PUP-2563) Remove 1.8.7 support

General comments for reviewers:
* Despite the ticket wording this is really "remove anything < 1.9.3". The
  distinction only comes up in a handful of commits, mostly those removing
  code where the original committer already assumed < 1.9.3 was equivalent
  to 1.8.7.
* I proceeded primarily by searching the code base for either 'RUBY_VERSION' or
  '1.8' and then doing the appropriate thing, ranging from comment tweaks to
  minor refactors.
* There are still some references to 1.8 in the code where it made sense to
  me for context (or in one case in interface/action.rb where disentangling
  the 1.8 impl was going to lead to too much of a rewrite to be worth it).
* I didn't make any effort to scrub 1.8-ish idioms generically - that seemed
  beyond the scope of the current ticket and too unbounded. I imagine those sort
  of changes will be picked up by refactoring as we go forward.
* That said, in some cases there were broken windows I fixed because I was there.
* I'll add comments to a couple individual commits where I had questions.
Moving the conversation about renaming these types from the original commit:

> kylog added a note 23 hours ago:
> Should we rename File19Windows and File19?

> peterhuene added a note 19 hours ago
> I'd say so. Puppet::FileSystem::Posix::File and Puppet::FileSystem::Windows::File, perhaps?

> kylog added a note 4 hours ago
> Or just Puppet::FileSystem::Posix and Puppet::FileSystem::Windows? So there'd be posix.rb and windows.rb files > under lib/puppet/file_system (I'm partially influenced by there being posix.rb and windows.rb file pairs in some other places (lib/puppet/provider/exec, lib/puppet/provider/file, lib/puppet/util)
> 
> /cc @Iristyle since he put in the FS abstraction originally so might have burning opinions on naming ;)

@Iristyle Thoughts on replacement names here now that we're not differentiating between Ruby 1.8 and Ruby 1.9+?  I'd probably go with Kylo's suggestions, personally.