(PUP-2563) Gracefully exit on ruby 187

Previously, running puppet on ruby 187 would fail in an unhelpful way:

    in `const_defined?': wrong number of arguments (2 for 1) (ArgumentError)

Since users have historically installed puppet using whatever ruby
version happens to be installed, we want to ensure puppet displays a
useful error message that ruby 1.9.3 or greater is required.

This commit puts the check in lib/puppet.rb, which handles the various
puppet entry points: when executing the `puppet` command, when using
puppet as a library, e.g. `require 'puppet'`, and via passenger's
config.ru. In the `puppet` command case, we need to rescue the
LoadError, print the error message and exit. In the other two cases, we
let the application decide how it wants to handle the LoadError.
Merge pull request #3379 from joshcooper/ticket/master/PUP-2563-187-error-message

(PUP-2563) Gracefully exit on ruby 187