Add dimension to the threshold pressure.
Merge pull request #292 from atgeirr/thpres-dimension

Add dimension to the threshold pressure.
remove the concept of "scalar" deck items and make the m_defaultApplied attribute private

the concept of scalar items was used to only allow defaults for such
items. I can't see a reason why strings and data items should not be
able to have defaults, though...
data items: allow to set only a subset of the values

e.g. Eclipse specifies that for PERMX only the topmost layer needs to
be specified, i.e. the following is valid on a 3x3x3 grid

```
PERMX
9*10 /
```

the previous behaviour was to throw.

also, mark if data items have been defaulted, i.e., the item of

```
PERMX
* /
```

will now return true for 'defaultApplied()'.
GridProperties: don't use the garbage from defaulted data items

e.g.

```
SWL
* /
```

resulted in the SWL keyword exhibiting in a single item of size 1 with
0 (or possibly undefined) value. without the previous patch, there is
not even a way to detect of that item was defaulted or not.

Note that the approach here is still incomplete as it can't support
situations like

```
SWL
10*0.1 10* 10*0.2 /
```

to fix this properly, more fundamental changes to the opm-parser data
structures are required, though...
first handle all integer properties, then all double ones

this is required in situations where double grid properties depend on
the values of integer (i.e, *NUM) ones which appear later in the
deck. Example:

```
PROPS

SWU
* /

REGIONS

SATNUM
*2 /
```

the default value of the SWU keyword depends on the value of the
SATNUM property which only gets defined later in the deck. an
alternative to the approach of this patch would be to process the
grid properties of the REGIONS section before the others. I'm a bit
indifferent which approach is better...
change the defaults for the *NUM integer properties to 1

and add the ENDNUM integer property.
grid properties: introduce initializer objects

this makes it possible to define more complicated initializers for
grid properties. (needed for example for keywords like ISGU.) This
patch does not introduce them yet, but only adds the necessary
infrastructure.

notes:

 - to get around cyclic definitions in template classes, the
   EclipseState is changed to a (defaulted) template parameter which
   causes the compiler to only look up the class definition at
   instantiation time.
 - using std::shared_ptr in the property initializers would lead to
   cyclic references which would cause memory leaks. To avoid that,
   plain old references where used in most places. I think this is
   okay as the GridProperty objects should be considered internal to
   EclipseState and thus the EclipseState object should live at least
   as long as GridProperty objects...
grid properties: implement a table-lookup initializer for the endpoint scaling keywords
GridPropertyInitializers: add unit test
add the PORV grid property and use NaNs as default values for most double grid property

In grid properties NaNs mean "I can't compute that value", either
because the parser needs information it cannot have (e.g. the position
of the cell centers for the endpoint scaling keywords which are
initialized using the ENPTVD tables or because the deck did not
specify a mandatory value like PERMX)
check for the IMPTVD keyword for the I* grid properties

the effect is quite limited: usually it uses NaNs if the IMPTVD/ENPTVD
initialization route is taken. the only difference is if there is
IMPTVD but no ENPTVD (or vice versa), but I somehow doubt that this is
a common case...