(FACT-482) Remove thread locking

Facter has sporadic instances where facts implement their own locking
when resolving facts. Facter itself has never made any guarantees about
thread safety so the existing locking is useless at best and broken at
worst.

When Mcollective resolves facts it acquires a threadlock before running
to ensure that facts are generated in an atomic fashion. However the
lock used is not scoped to the given critical region; it is global so
`Thread.exclusive` cannot be reentered in a single thread:

    [3] pry(main)> Thread.exclusive do
    [3] pry(main)*   Thread.exclusive do
    [3] pry(main)*     puts "hi"
    [3] pry(main)*   end
    [3] pry(main)* end
    ThreadError: deadlock; recursive locking
    from <internal:prelude>:8:in `lock'

Because of this the facter facts source could not be used on Windows
because Mcollective and Facter would deadlock. This commit removes the
locking from Facter and places the responsibility for thread safety on
the code invoking Facter.
Merge pull request #688 from adrienthebo/issue/facter-2/fact-482-remove-thread-locking

Issue/facter 2/fact 482 remove thread locking