Add new EclipseGrid constructor taking a Deck.

The new constructor allows us to create EclipseGrid objects from decks that do not have a strict sectioned structure. This should allow us to consolidate the construction process for grids around the EclipseGrid class, even for cases where we do not require strict sectioning (such as the upscaling codes).

This also modifies some implementation details. Many methods are now templates, and can take Deck or Section objects (they have the same hasKeyword/getKeyword interface).
The `SPECGRID` and `DIMENS` keywords "by accident" have the same item names `NX,NY` and `NZ`; when we start depending on that type behaviour we should 'protect it' with a test.