(PUP-2758) Add micro benchmark(s) task

This adds a benchmark that runs a series of puppet manifests that
are measured individually for parse and evaluation time. Each
manifest is measured 100x each for parse and evaluation. The benchmark
total time includes running all of them (including overhead of
measuring the details). Details are output as average of all runs
per detail where parsing and evaluating is output as separate entries.

The sample file written is for the total average.
(PUP-2758) Add passing arguments (warm_up and detail) to Benchmarker.run

Arguments are needed to be able to run one detail of a benchmark.
The evaluations benchmark makes use of this, all others ignore the
arguments.
(maint) Correct typo in loader helper class and add tests

Loading the same function multiple times from modules caused
an error because of a typo in NamedEntry. This adds tests for the
helper classes basic functionality, and adds tests that loaders indeed
can load a function more than once.

This also corrects error handling (yet another typo) when a function was
redefined (the wrong method was called).
(PUP-2758) Add calls to 3x, 4x, and namspace 4x functions to evaluations

This adds additional benchmarks for function calls using 3x calls,
4x calls in global namespace, and name spaced to a module.

A simple assert_type benchmark is also added (one simple type check).
(PUP-2758) Generate tasks with arguments defined by benchmark

This makes it possible for a benchmark scenario that wants
additional details to run a smaller portion of the benchmark to
configure these by defining a class called BenchmarkerTask (currently
only used by the evaluations benchmark). The separation from the
Benchmarker class is that this class is loaded when rake generates a
list of tasks, and it is not wanted to load each full benchmark in turn
to generate this list. (Over time, the BenchmarkerTask can be expanded
on to perform other task generation duties).

It is now possible to run all of the evaluations benchmarks,
profile all, run one particular micro benchmark, or just its parse or
evaluation part by suffixing the name with _parse or _eval. As an
example rake benchmark:evaluations:run[assert_type_eval] runs only the
evaluation part of the assert_type micro benchmark in evaluations. (This
is especially useful when running profiling.

For profiling, the parameter warm_up_runs is always included.
(PUP-2758) Add benchmarks empty catalog, and defined_types for future

This adds benchmark that runs the defined_types benchmark for the future
parser (everything else is the same).
A benchmark is also added to measure the overhead of compiling a
catalog with minimal (almost nothing) content (i.e. a command line
puppet apply scenario).
Merge pull request #2778 from hlindberg/PUP-2758_micro-benchmarks

(PUP-2758) Add micro (and other) benchmarks for future parser/evaluator