Implement grid property initializers

this makes it possible to use basically arbitrarily complex initialization schemes for grid properties. The second patch uses the new infrastructure for the endpoint scaling keywords where the defaults are given by  lookups in the SWOF/SGOF tables. @osae: could you please check that the correct default values are used before this is merged?

On an unrelated issue, I noticed that we will probably need to introduce a "grid property post-processors" to be fully spec compatible because for e.g. PERM[XYZ] the spec says that only the top layer of cells needs to specified and if the remainder is left undefined, the values should be copied from the topmost layer. This behavior cannot be implemented at the moment.. (Not that any sensible deck would ever want to do such a thing, but it is in the spec...)
This I do not understand - of two reasons:

1. The comparison `sourceIdx >= deckItem->size()` seems to be a comparison in two different spaces? `sourceIdx` is just a counter index *into* the `indexList`- I guess the comparison should be between `indexList[sourceIdx]` and  `indexList.size()`?? 
2. The comment: 
```C++
// ignore the parts of the box for which the keyword does not specify a value
``` 
does not make sense to me - the code seems support the situation with boxes with missing data; i.e. something like:
```
BOX
-- Define box with 100 elements
   1 10  1  10  1  1  /

PERMX
-- PERMX only has two elements - altough the box said 100?
   2 * 0.15 /

```
that is `throw`material in my opinion.