(SERVER-116) Reuse client instances

Reuse HTTP client instances in the ruby code rather than creating
a new one for every request.
Merge pull request #284 from fpringvaldsen/SERVER-116-reuse-client-instances

(SERVER-116) Reuse client instances
(MAINT) Update TK and Kitchensink dependencies
Merge branch 'master' into future

* master: (21 commits)
  (MAINT) Ensure gem subcommand tests honor GEM_SOURCE
  (maint) add config for admin API
  (SERVER-208) Improve error message for missing `puppet-admin` section
  (SERVER-114) /environment-cache header handling
  (SERVER-114) specify puppet.conf used by test
  (MAINT) Use GEM_SOURCE env var in Gemfile
  (SERVER-114) add comment about test coverage
  (SERVER-114) make API more RESTful
  (SERVER-114) endpoint to flush environment cache
  (maint) rename functions for clarity + consistency
  (MAINT) Add build & compare urls to travis template.
  (SERVER-167) Added language to syntax highlights
  (SERVER-138) Fixed typo
  Just fixing a spelling mistake
  (SERVER-203) Update to clj-http-client 0.4.0
  (SERVER-113) Add new puppet-admin-api HTTP endpoint
  (SERVER-167) Add documentation on `set_trace_func`
  (SERVER-113) Refactor whitelist logic out to ringutils
  (SERVER-138) Set name of doc section to HttpPool-Related Server Settings
  (SERVER-138) Addressed PR feedback
  ...

Conflicts:
	src/ruby/puppet-server-lib/puppet/server/http_client.rb
(maint) delete a couple unused functions
(SERVER-88) catch errors before they get to Jetty

Add a 'catch-all' middleware to both the Master and CA ring handlers
which catches any Exception, logs it, and returns a simple error message
in the response body.  This prevents Exceptions from propagating all the
way out to Jetty - if this happens, Jetty will generate HTML from the
stacktrace and return this to the client.
(SERVER-88) improve exception handling

* 'wrap-exception-handling' now includes the exception type + message in
  the response body it returns.

* Update the exception handler in the liberator resources to simply
  re-throw exceptions, causing them to be handled in middleware.
(maint) fixup botched merge conflict resolution
(maint) docs for admin API + /environment-cache

* Add docs on the new /environment-cache endpoint.

* Update the config doc with more detail about configuring the admin
  API.

* Minor formatting / wording fixes in the /certificate_status section.
Merge pull request #296 from fpringvaldsen/update-to-tk-1.0.1

(MAINT) Update TK and Kitchensink dependencies
DOC-1281: edits for Puppet Server external_ca_config
DO-1281: Puppet Server docs, external_SSL_termination

Edit and reorg of external_SSL_termination document for Puppet Server.
minor wording / capitalization fixes
fix typo in docstring
DOC-1281: edits to external_ca_configuration and external_SSL_termination pages

Edits and adding a note about X-Client-Cert.
Merge pull request #285 from KevinCorcoran/SERVER-88/no-html-in-500s

(SERVER-88) catch errors before they get to Jetty
Merge branch 'master' into future

* master:
  lein-release plugin: bumped version from 0.4.1 to 0.4.2-SNAPSHOT for next development cycle
  lein-release plugin: preparing 0.4.1 release
  (MAINT) Add some notes about debugging / ruby
  (MAINT) Fix typos, simplify git submodule init for quickstart
  (MAINT) Update developer docs re: running from source
  DOC-1281: Puppet Server gems, puppetserver_vs_passenger
(MAINT) Fix typo, it's ruby-load-path, not paths

Setting ruby-load-paths instead of ruby-load-path results in:
Caused by: java.lang.Exception: JRuby service missing config value 'ruby-load-path'
Merge pull request #307 from jasperla/load-path

(MAINT) Fix typo, it's ruby-load-path, not paths
(maint) Add in support for the packaging repo

Since puppet-server is built with ezbake, this addition is not
necessary. However, we do want to be able to create release tickets for
the puppet-server project when the time comes for a release. It does
seem a little silly to add in support for the entire packaging repo just
to create release tickets, but ultimately that funcionality will be good
to have easy access to.

Note, the yaml files included in this pull request are the minimum
viable to generat the release tickets. A lot of the other tasks and
automation available through the packaging repo will not work because of
what is left out. Again, if those tasks are needed, they should be run
with EZBake.

In order to create tickets, in the puppet server project, run the
following:

`rake package:implode package:bootstrap`
`rake pl:tickets BUILDER=melissa DEVELOPER=$you WRITER=jean
RELEASE=1.0.0 DATE=2014-12-15 JIRA_USER=$you PROJECT=SERVER`

The DEVELOPER corresponds to the persion who is going to coordinate the
release. The BUILDER is the Release Engineer working on the release, and
the JIRA_USER is the person who is creating the tickets. It is important
that the names all correspond to actual jira usernames.

More documentation is available at
https://github.com/puppetlabs/packaging/blob/master/tasks/tickets.rake#L408