(PUP-2303) Fix arguments of ArgumentError

Yo dawg, I heard you like ArgumentErrors so I put an
ArgumentError in your ArgumentError.

This makes errors in fileserver config much more readable and
easier to find.
(PUP-1597) Fix contain functions lookup of class with leading ::

When the contain function creates edges it looked up resources
without removing the leading :: in the name. The catalog never stores
these, and thus an edge was formed between a resource and nil.

This commit simply removes the ::. There is no checking that a resource
is actually returned since they should all be there due to the call to
include them in the catalog (which would fail if it was not possible to
include them).

A test is also added for the erronous (and now fixed case).
(PUP-1597) Handle containment of relative names

The contain() function made an error when dealing with a relative name.
It assumed that the class that was actually included was always the same
as the name that it was given. In many cases this is true, but when the
name is found via a relative lookup (e.g. contain(bar) inside a class
foo, when a foo::bar exists), the assumption breaks down. The source of
the problem is that it tries to look up the included class after the
fact. Without all of the extra information about namespaces it isn't
able to find the right class.

To fix this, the include() function has been updated to return the
class resources that it included (including those that were already
present). This allows the contain() function to create the appriate
edges with the exact resources needed.

A secondary change in this was to remove the checks for include not
being able to include a class. The compiler method that is involved
already makes that check and raises an error, so the include functions
code was simply redundant.
(PUP-1597) Separate different modes of including

The evaluate_classes method has a couple different responsibilities and
inputs. This is just an attempt to pull them apart some and make the
flows a little more straightforward.
(maint) Reduce resource lookup

scope.resource was called multiple times. Even if this is a simple
method, it is still a method call and is slower than just holding onto
the result. This also removes some comments that appear to be out of
date.
(PUP-1028) Specify various ways of matching nodes

There were no tests that tried to specify how node statements are
selected. This adds coverage for various ways in which a node statements
can match a given node object and varifies that the future evaluator and
the current evaluator produce the same results.

There are 2 cases where the future evaluator isn't able to handle the
same node statements: using numbers. One case, where a name begins with
a number, seems completely reasonable. The other case, where the name is
a valid number, seems like an arbitrary restriction and so we need to
discuss.
(PUP-1028) Improve grammar for node expression to accept numbers.

It was previously not possible to enter a name consisting of just
a number, or where one name part was a number.

e.g.
1.2.3.4
hello.1

This grammar change fixes this problem. Note that any segment must be a
valid name or valid numeric string. Also note that white space is
ignored.
Merge pull request #2553 from duritong/fix/master/argument_error

(PUP-2303) Fix arguments of ArgumentError
(PUP-1028) Remove pending tests that aren't needed

The new parser has been updated to be able to handle nodes with numeric
names and so the test for that case now passes for both the current and
future parser. The only remaining case is when the name is an invalid
number. The future parser won't ever parse this correctly and so the
test has been changed to assert the desired behavior, in which the
parser fails.

The new changes to the parser also allows it to handle dotted names and
so a new test has been added for that.
Merge pull request #2630 from zaphod42/issue/master/pup-1028-shore-up-testing-around-node-statements

(PUP-1028) Specify various ways of matching nodes
Merge pull request #2633 from zaphod42/issue/master/pup-1597-contain-is-just-wrong

(PUP-1597) Fix contain functions lookup of class with leading ::
Merge branch 'master' of https://github.com/puppetlabs/puppet