(GEP-108) Warn when conditional is used as r-value

A conditional expression (if, unless, case) cannot be an r-value
expression in Puppet versions < 4.0. This commit ensures that they
will be flagged with an error unless the target platform is >= 4.0.

The commit changes the inheritance hierarchy of the pp Expressions
so that if, unless, case, definition, and node are ExpressionBody
subclasses (they all have a sequence of statements). This made it
easy to check if a conditional is directly contained in a body (and
hence allowed) or if it used as an r-value. The one exception
I found to this is when a case is used in a relationship.
Merge pull request #35 from puppetlabs/issue-108

(GEP-108) Warn when conditional is used as r-value
(GEP-551) Warn about deprecated variable names

A Name starting with an upper case letter or a digit (but is't
a decimal number without leading zeroes) will become deprecated
in future versions of puppet. This commit ensures that Geppetto
can warn about such names (optional setting but the default is
to warn) and that such names will result in error when the future
platform is used.
Merge pull request #37 from puppetlabs/issue-551

(GEP-551) Warn about deprecated variable names
(GEP-164) Handle dropped support for operator += in 4.0

Add a preference that controls reporting when the deprecated
+= operator is used. The default setting for this preference
is 'warning'. The preference is hardcoded to error in when
using version 4.0.