Just a heads up, this change appears to cause the following examples to fail:

```
$ rspec -fp ./spec/unit/agent_spec.rb
..F......FFFFFFFF.................

Failures:

  1) Puppet::Agent should create an instance of its client class and run it when asked to run
     Failure/Error: client.expects(:run)
     Mocha::ExpectationError:
       not all expectations were satisfied
       unsatisfied expectations:
       - expected exactly once, not yet invoked: #<Mock:client>.run(any_parameters)
       - expected exactly once, not yet invoked: AgentTestClient.new(any_parameters)
       satisfied expectations:
       - allowed any number of times, not yet invoked: Signal.trap(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29b2080f8>.disabled?(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29b2080f8>.running?(any_parameters)
       - allowed any number of times, not yet invoked: #<Puppet::Agent:0x7fd29b2080f8>.lock(any_parameters)
       - allowed any number of times, not yet invoked: #<Class:0x7fd29b20cfe0>.clear?(any_parameters)
     # ./spec/unit/agent_spec.rb:57:in `block (2 levels) in <top (required)>'

  2) Puppet::Agent when being run should use Puppet::Application.controlled_run to manage process state behavior
     Failure/Error: AgentTestClient.expects(:new).once.in_sequence(calls)
     Mocha::ExpectationError:
       not all expectations were satisfied
       unsatisfied expectations:
       - expected exactly once, not yet invoked: AgentTestClient.new(any_parameters); in sequence 'calls'
       satisfied expectations:
       - allowed any number of times, not yet invoked: Signal.trap(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29b914518>.disabled?(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29b914518>.running?(any_parameters)
       - allowed any number of times, not yet invoked: #<Puppet::Agent:0x7fd29b914518>.lock(any_parameters)
       - expected exactly once, invoked once: #<Class:0x7fd29b913370>.controlled_run(any_parameters); in sequence 'calls'
       - allowed any number of times, not yet invoked: #<Class:0x7fd29b913370>.clear?(any_parameters)
       - allowed any number of times, not yet invoked: AgentTestClient.lockfile_path(any_parameters)
     # ./spec/unit/agent_spec.rb:118:in `block (3 levels) in <top (required)>'

  3) Puppet::Agent when being run should not fail if a client class instance cannot be created
     Failure/Error: AgentTestClient.expects(:new).raises "eh"
     Mocha::ExpectationError:
       not all expectations were satisfied
       unsatisfied expectations:
       - expected exactly once, not yet invoked: AgentTestClient.new(any_parameters)
       - expected exactly once, not yet invoked: Puppet.err(any_parameters)
       satisfied expectations:
       - allowed any number of times, not yet invoked: Signal.trap(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29b95b9b8>.disabled?(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29b95b9b8>.running?(any_parameters)
       - allowed any number of times, not yet invoked: #<Puppet::Agent:0x7fd29b95b9b8>.lock(any_parameters)
       - allowed any number of times, not yet invoked: #<Class:0x7fd29b95a810>.clear?(any_parameters)
       - allowed any number of times, not yet invoked: AgentTestClient.lockfile_path(any_parameters)
     # ./spec/unit/agent_spec.rb:123:in `block (3 levels) in <top (required)>'

  4) Puppet::Agent when being run should not fail if there is an exception while running its client
     Failure/Error: AgentTestClient.expects(:new).returns client
     Mocha::ExpectationError:
       not all expectations were satisfied
       unsatisfied expectations:
       - expected exactly once, not yet invoked: AgentTestClient.new(any_parameters)
       - expected exactly once, not yet invoked: #<AgentTestClient:0x7fd29b2c5e78>.run(any_parameters)
       - expected exactly once, not yet invoked: Puppet.err(any_parameters)
       satisfied expectations:
       - allowed any number of times, not yet invoked: Signal.trap(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29b13fe28>.disabled?(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29b13fe28>.running?(any_parameters)
       - allowed any number of times, not yet invoked: #<Puppet::Agent:0x7fd29b13fe28>.lock(any_parameters)
       - allowed any number of times, not yet invoked: #<Class:0x7fd29b13ec80>.clear?(any_parameters)
       - allowed any number of times, not yet invoked: AgentTestClient.lockfile_path(any_parameters)
     # ./spec/unit/agent_spec.rb:130:in `block (3 levels) in <top (required)>'

  5) Puppet::Agent when being run should use a mutex to restrict multi-threading
     Failure/Error: @agent.expects(:sync).returns mutex
     Mocha::ExpectationError:
       not all expectations were satisfied
       unsatisfied expectations:
       - expected exactly once, not yet invoked: #<Puppet::Agent:0x7fd299c75650>.sync(any_parameters)
       - expected exactly once, not yet invoked: AgentTestClient.new(any_parameters)
       - expected exactly once, not yet invoked: #<Mock:mutex>.synchronize(any_parameters)
       satisfied expectations:
       - allowed any number of times, not yet invoked: Signal.trap(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd299c75650>.disabled?(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd299c75650>.running?(any_parameters)
       - allowed any number of times, not yet invoked: #<Puppet::Agent:0x7fd299c75650>.lock(any_parameters)
       - allowed any number of times, not yet invoked: #<Class:0x7fd299c744a8>.clear?(any_parameters)
       - allowed any number of times, not yet invoked: AgentTestClient.lockfile_path(any_parameters)
       - expected never, not yet invoked: #<AgentTestClient:0x7fd299c77a90>.run(any_parameters)
     # ./spec/unit/agent_spec.rb:141:in `block (3 levels) in <top (required)>'

  6) Puppet::Agent when being run should use a filesystem lock to restrict multiple processes running the agent
     Failure/Error: @agent.expects(:lock)
     Mocha::ExpectationError:
       not all expectations were satisfied
       unsatisfied expectations:
       - expected exactly once, not yet invoked: #<Puppet::Agent:0x7fd29b8dc208>.lock(any_parameters)
       - expected exactly once, not yet invoked: AgentTestClient.new(any_parameters)
       satisfied expectations:
       - allowed any number of times, not yet invoked: Signal.trap(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29b8dc208>.disabled?(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29b8dc208>.running?(any_parameters)
       - allowed any number of times, not yet invoked: #<Puppet::Agent:0x7fd29b8dc208>.lock(any_parameters)
       - allowed any number of times, not yet invoked: #<Class:0x7fd29b8bc020>.clear?(any_parameters)
       - allowed any number of times, not yet invoked: AgentTestClient.lockfile_path(any_parameters)
       - expected never, not yet invoked: #<AgentTestClient:0x7fd29b8bf608>.run(any_parameters)
     # ./spec/unit/agent_spec.rb:152:in `block (3 levels) in <top (required)>'

  7) Puppet::Agent when being run should make its client instance available while running
     Failure/Error: AgentTestClient.expects(:new).returns client
     Mocha::ExpectationError:
       not all expectations were satisfied
       unsatisfied expectations:
       - expected exactly once, not yet invoked: AgentTestClient.new(any_parameters)
       - expected exactly once, not yet invoked: #<AgentTestClient:0x7fd29b8b2c78>.run()
       satisfied expectations:
       - allowed any number of times, not yet invoked: Signal.trap(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29b8b0838>.disabled?(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29b8b0838>.running?(any_parameters)
       - allowed any number of times, not yet invoked: #<Puppet::Agent:0x7fd29b8b0838>.lock(any_parameters)
       - allowed any number of times, not yet invoked: #<Class:0x7fd29b8af690>.clear?(any_parameters)
       - allowed any number of times, not yet invoked: AgentTestClient.lockfile_path(any_parameters)
     # ./spec/unit/agent_spec.rb:160:in `block (3 levels) in <top (required)>'

  8) Puppet::Agent when being run should run the client instance with any arguments passed to it
     Failure/Error: AgentTestClient.expects(:new).returns client
     Mocha::ExpectationError:
       not all expectations were satisfied
       unsatisfied expectations:
       - expected exactly once, not yet invoked: AgentTestClient.new(any_parameters)
       - expected exactly once, not yet invoked: #<AgentTestClient:0x7fd29a2165a0>.run(:pluginsync => true, :other => :options)
       satisfied expectations:
       - allowed any number of times, not yet invoked: Signal.trap(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29a206b50>.disabled?(any_parameters)
       - allowed any number of times, invoked once: #<Puppet::Agent:0x7fd29a206b50>.running?(any_parameters)
       - allowed any number of times, not yet invoked: #<Puppet::Agent:0x7fd29a206b50>.lock(any_parameters)
       - allowed any number of times, not yet invoked: #<Class:0x7fd29a212f90>.clear?(any_parameters)
       - allowed any number of times, not yet invoked: AgentTestClient.lockfile_path(any_parameters)
     # ./spec/unit/agent_spec.rb:168:in `block (3 levels) in <top (required)>'

  9) Puppet::Agent when being run should return the agent result
     Failure/Error: @agent.run.should == :result
       expected: :result
            got: 1 (using ==)
     # ./spec/unit/agent_spec.rb:179:in `block (3 levels) in <top (required)>'

Finished in 0.66941 seconds
34 examples, 9 failures

Failed examples:

rspec ./spec/unit/agent_spec.rb:53 # Puppet::Agent should create an instance of its client class and run it when asked to run
rspec ./spec/unit/agent_spec.rb:115 # Puppet::Agent when being run should use Puppet::Application.controlled_run to manage process state behavior
rspec ./spec/unit/agent_spec.rb:122 # Puppet::Agent when being run should not fail if a client class instance cannot be created
rspec ./spec/unit/agent_spec.rb:128 # Puppet::Agent when being run should not fail if there is an exception while running its client
rspec ./spec/unit/agent_spec.rb:136 # Puppet::Agent when being run should use a mutex to restrict multi-threading
rspec ./spec/unit/agent_spec.rb:148 # Puppet::Agent when being run should use a filesystem lock to restrict multiple processes running the agent
rspec ./spec/unit/agent_spec.rb:158 # Puppet::Agent when being run should make its client instance available while running
rspec ./spec/unit/agent_spec.rb:166 # Puppet::Agent when being run should run the client instance with any arguments passed to it
rspec ./spec/unit/agent_spec.rb:174 # Puppet::Agent when being run should return the agent result
```

Here's the "voltron" I'm exercising these examples with:

```
$ rake voltron
(in /workspace/puppet-3.x)
 * puppet                   pfmooney-master            3.0.1-176-gb480d11      b480d11
 * facter                   2.x                        1.6.14-rc1-302-g0fcb67b 0fcb67b
 * hiera                    fix/master/dev_null_config 1.1.1-1-g0eaa709        0eaa709
 * rspec-puppet             master                     v0.1.5                  695b9a4
 * puppetlabs_spec_helper   master                     0.3.0-3-gdf3b021        df3b021
 * fog                      0.7.2                      v0.7.2                  c7ec7c9
 * rbvmomi                  master                     N/A                     5dc0ca3
 * stdlib                   master                     3.1.0-23-g23cf7d0       23cf7d0
 * hiera_puppet             v0.3.0                     v0.3.0                  06e70f3
 * mount_providers          master                     0.0.2                   233e3f6
 * pe_mcollective           master                     0.0.45-2-g64c6523       64c6523
 * pe_accounts              master                     1.0.3                   0725c16
 * pe_compliance            master                     0.0.5                   dddc001
 * cloud_provisioner        master                     1.0.5-6-gd69f962        d69f962
 * cloud_provisioner_vmware master                     v1.0.0-5-g6eaab64       6eaab64
 * hiera_puppet             v0.3.0                     v0.3.0                  06e70f3
 * json                     gem                        1.5.4                   N/A    
 * mocha                    gem                        0.10.5                  N/A    
 * rack                     gem                        1.4.1                   N/A    
 * rspec                    gem                        2.10.0                  N/A    
 * rspec-core               gem                        2.10.1                  N/A    
 * rspec-expectations       gem                        2.10.0                  N/A    
 * rspec-mocks              gem                        2.10.1                  N/A    
 * rspec-puppet             gem                        0.1.5                   N/A    
```