Fix silently failing negative test
Name the arithmetic functions

As the + - * / symbols are not accepted as function (symbol) names in
the DSL at this point. So in order to do math, the basic arithmetic
functions can now be used as add, subtract, multiply and divide. Which
also makes prefix araithmetic seem a bit more acceptable.
Generate values for nested protoypes

However, field cross references are only allowed to sibling fields. The
parent cannot refer to fields defined in the child, and vice versa.
Adds context to field definition

The context tells us where in the row the field definition is located.
Given the following prototype

prototype some {
	first	string
	second	{
		alfa	[0 100]
	}
}

The alfa field has context [:second :alfa], whereas the first field has
a context of [:first]
Rename :field to :fieldref where appropriate
Support for xrefs between nested prototypes

Now field cross references ($somefield) can be done both from parent
prototype to a child field, and from a nested prototype to a parent
field.

prototype parent
{
	num		[0 10]
	sum		add $childA.val $childB.val
	working	or $done $started
	childA	{
		val	[0 10]
		done	bool
	}
	childB	{
		val	[0 10]
		started	bool
	}
}

In this case a reference to val needs to be qualified with the containing prototype, such as $childA.val or $childB.val, but $done and started are adequate reference regardless of from where the reference is made (from childA, childB or the parent), as they both uniquely identifies a field.