(#2888) Add settings catalog info to README_DEVELOPER

Without this patch the README_DEVELOPER doesn't mention the special
settings catalog which I overlooked while working on #2888.  If the
settings catalog was in mind while I worked on this issue I probably
would have solved it a lot faster than it took to track down.

In particular, wrapping the File.open method was an effective way to
quickly track down the codepath that was improperly writing and
truncating the lockfile.
(#2888) Fix race condition with puppetdlockfile

Without this patch applied there is a race condition where by two or
more concurrent puppet agent processes will eventually result in a
deadlock state where all processes consider catalog runs to be
administratively disabled.

This is a problem because the configuration catalog stops being applied
periodically.  The system will not recover unless there is manual
intervention by the end user.

The problem is caused by the settings catalog.  The settings catalog
will contain a file resource for the puppetdlockfile if the file exists.
When two processes are running, the file will exist when it is created
by the other process.  When the file resource is in the settings
catalog, it will be created as a zero length file, or truncated to a
zero length file if it already exists.

Here is the state transition for two puppet agent --test processes, A
and B.

    A:
    lock()
      File.exist? => false
      File.open()
      catalog.run
      ...

    B:
    Puppet::Util::Settings#to_catalog
      File.exist? => true
      catalog.add_resource(Puppet::Type::File)
      ...
      resource synchronizes
      Puppet::Type::File#write(:content)

    A:
    unlock()
      unlink()

    B:
    settings catalog apply
      File.open("puppetdlock", "wb") { ... } # Truncates the file!

    A:
    locked? => true
    mine? => false

    B:
    locked? => true
    mine? => false

    A and B are deadlocked.

This patch fixes the problem by marking the puppetdlockfile settings as
a `:type => :setting`.  This change prevents the settings catalog from
containing a file resource for the puppetdlockfile setting.

Paired-with: Josh Cooper <josh@puppetlabs.com>
Merge branch 'bug/2.7.x/2888_fix_puppetdlock_deadlock' into 2.7.x

* bug/2.7.x/2888_fix_puppetdlock_deadlock:
  (#2888) Fix race condition with puppetdlockfile
  (#2888) Add settings catalog info to README_DEVELOPER
Merge branch '2.7.x' into 3.x

* 2.7.x:
  (#2888) Fix race condition with puppetdlockfile
  (#2888) Add settings catalog info to README_DEVELOPER

Conflicts:
	lib/puppet/defaults.rb
	spec/integration/defaults_spec.rb
Merge branch '3.x'

* 3.x:
  (#2888) Fix race condition with puppetdlockfile
  (#2888) Add settings catalog info to README_DEVELOPER
(Maint) Remove fragile test

This test began to fail with

  1) Puppet::SSL::Key should default to the :file terminus
       Failure/Error: @class.indirection.terminus_class.should == :file
         expected: :file
              got: :disabled_ca (using ==)
         Diff:
         @@ -1,2 +1,2 @@
         -:file
         +:disabled_ca
       # ./spec/unit/ssl/key_spec.rb:20

which was caused by other tests setting the terminus_class for the
Puppet::SSL::Key class. Since this is testing no interesting logic and
just looking at a default (that can be changed and not recovered), I'm
just removing the test.
Merge remote-tracking branch 'upstream/2.7.x' into 3.x

* upstream/2.7.x:
  (Maint) Remove fragile test
Merge remote-tracking branch 'upstream/3.x'

* upstream/3.x:
  (Maint) Remove fragile test