Add new constructor taking a Deck.

The new constructor allows us to create EclipseGrid objects from decks
that do not have a strict sectioned structure.

Also modify some implementation details. Many methods are now templates,
and can take Deck or Section objects (they have the same
hasKeyword/getKeyword interface).
Allow DIMENS to be used as well as SPECGRID when no sections are found.

Also refactor DIMENS/SPECGRID to dimension code as a function.
Added test case for construction from deck with no sections.
Create pointer-to-const objects.

Older gcc (4.4) does not allow conversion of shared_ptr<Foo> to
shared_ptr<const Foo>. Pointed out by @bska.
Remove section-using EclipseGrid constructors.

Also:
 - Simplify implementation (no templates).
 - Update tests.
Merge pull request #284 from atgeirr/new-eclipsegrid-constructor

Add new EclipseGrid constructor taking a Deck.