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.
relax strictness of the section handling and fix/work around a few bugs

We now do not require the sections to be correctly ordered and the
presence of the mandatory sections since even the unit tests did not
always specify all mandatory sections, which lead to a section
containing the rest of the deck if one of the expected next sections
was not specified.

also it seems like the DeckKeyword::getDeckIndex() does not correctly
work in some situations which lead

assert(deck->getKeyword(i)->name() == startKeyword);

to fail in the Section::populateKeywords() method. now the deck is
always sequentially traversed to find the position of a section's
start keyword. (This is necessary anyway if one wants to make sure
that the deck does not specify the same section more than once, a
feature which this patch also adds.)
considerably extend the unit test for sections

for this, an Section::isDeckValid() method is introduced which checks
that a given deck is valid when it comes to the sections
(i.e. presence of mandatory sections and section ordering)
Merge pull request #283 from andlaus/fix_section_handling

relax strictness of the section handling and fix/work around a few bugs
Merge pull request #284 from atgeirr/new-eclipsegrid-constructor

Add new EclipseGrid constructor taking a Deck.
Fix the NullStream class.

It is the std::streambuf that should be inherited from.
The NullStream class is just a convenience class.
Merge pull request #286 from atgeirr/fix-nullstream

Fix the NullStream class.
Add LiquidVolume dimension to MINPV keyword.
Add MINPV features to EclipseGrid class.
add a few missing includes

these includes are required by the headers. If the affected files
would have been included without the headers included before, a
compiler error would have been produced.
Merge pull request #290 from andlaus/add_includes

add a few missing includes
Merge pull request #287 from atgeirr/add-minpv

Add MINPV features to EclipseGrid
work around an optimizer performance bug in clang.

It seems like some optimization passes of CLang which are enabled by
-O2 (at least in my version, 3.3) do not like nested scopes and long
functions too much. Thus, slightly change the generated source. Timing
on my (quite beefy) machine:

without patch:

make
rm -rf generated-source; time make
time make
[...]
real    10m31.110s
user    10m16.264s
sys     0m13.672s

with patch:

make
rm -rf generated-source; time make
time make
[...]
real    0m47.011s
user    0m44.670s
sys     0m1.968s

the memory used by the compiler goes from 28.8GB to about 330 MB. (I
suppose not everybody has 32 Gigs of memory yet. ;)
Merge pull request #291 from andlaus/work_around_clang_issue

work around an optimizer performance bug in clang.
EclipseState: check the canonical section topology

at least if the "beStrict" parameter for the constructor is set to
true. by default nothing changes...
Merge pull request #288 from andlaus/be_strict_by_default

EclipseState: require the canonical section topology