PDB-476 Decorate the terminus code with Puppet profiling blocks

This patch adds some select profiling blocks to the PuppetDB terminus code.

The profiler is provided by puppet core from Puppet::Util::Puppetdb#profile,
which has recently become public for our use. We provide here in our own utils
library our own wrapper implementation that can be mixed in.

Key areas of our terminus functionality have now been profiled with this
patch:

* Entry points are profiled and identified by their entry methods (save, find,
  search etc.)
* Remote calls, HTTP gets/posts
* Code that does any form of encoding/decoding that might be potentially slow
  at capacity.

The style of messages I've used follow along with the existing Puppet profiling
examples already in place so as to be readable together. We have prefixed our
profile message with "PuppetDB" for easy searchability also.

I have provided a small FAQ entry that explains in brief the process of
debugging, although we lack something to link to in Puppet for a more detailed
explanation. This will probably need to be fixed if better documentation comes
available.

Signed-off-by: Ken Barber <ken@bob.sh>
Merge pull request #872 from kbarber/ticket/master/PDB-476-terminus-profiling

PDB-476 Decorate the terminus code with Puppet profiling blocks