Fix problems with loading Array and Hash in Hiera2 backend.

The code was untested and had several problems.
(maint) Prevent error when 'common' is given in the categories.

The category common is predefined and if included in the input
an "attempt to redefine" was raised. Now it ignores the last category if
it is named common. This means that if common is placed at some other
precedence a wanted errors is raised, but never when it is placed last).
Add EvaluatingParser, and create injector in Compiler.
Merge pull request #30 from zaphod42/feature/binder

Add a lookup() function for injected values
Merge remote-tracking branch 'hlindberg/feature/binder' into feature/binder
(yardoc) Add yardoc to added logic in compiler.
Replace use of StringEvaluator with EvaluatingParser

This makes the hiera2 backend more powerful; it can now parse
and evaluate full Puppet Expressions. 
The quote method is now Ruby 1.8.7 compliant.

Removes StringEvaluator.
Ensure that binder evaluates using Puppet[:parser] = 'future'

This ensure more correct evaluation.
Fix Pupet typo
Add implicit parameter lookup for hostclass resources.

This adds implicit lookup of host class parameters via injector.
Checks DataBindings (i.e. Hiera) if there is no bound value.

Fixes tests that were mocking scope and did not expect calls to
compiler. Also adds accessor method that creates an injector if none was
created.
Add tests for implicit injection.

This adds tests that host class parameters are looked up in the
injector.
Also adds a NullInjectorImpl intended to use in future tests.
Stringify puppet Booleans as "Boolean"

The stringification logic missed out on the case of Booleans and was
instead stringifying the type as "Literal". This adds boolean support in
the stringification so that it is now stringified as "Boolean".
Add type spec parser

This adds a parser for type specifications. At the moment it only
supports unparameterized types (so no collections, only scalar types).
It converts a string of the type specification into the type model.
Check looked up type against provided type in lookup()

The lookup() function can now enforce the type that the caller of the
function is expecting to receive by being provided a type specification
as a second argument. If no argument is provided it will default to
needing "Data", which is the supertype of all of the data types (Object
is a supertype, but doesn't not result in getting a looked up value
because the type is also part of a namespace for the injection system
and it holds object separate from data).