Added header, footer and separator settings to ObjectWriter.

These settings allow to prefix the output with a header string and to
append a footer at the end of the stream. Additionally, the separator
between objects can be now changed. Previously, this was always a
newline character.

The default settings of header, footer and separator are chosen so that
the output of ObjectWriter is the same as in the old version of the
module (i.e. a new line character is append to each object).

In addition to these new options the encoding and compression options
can now be set via Flux.

This commit offers a solution for issue #152: The output of the JSON
encoder can be turned into a JSON array by setting header to "[",
separator to ", " and footer to "]".
Changed JsonEncoder to not prefix output with spaces.

Starting from the second object JsonEncoder added a space character to
each serialised object it generated (as pointed out in issue #152). This
commit changes the configuration of the JSON generator used by
JsonEncoder to not output these spaces.
Improved code layout and two small corrections in the documentation
Added an <all> statement to metamorph.

The statement implements a universal quantor or conjunction operation
(logical and-operation). It allows for checking whether all statements
contained in the <all> statement generated an output. Using the <all>
statement conjunctions can be written in a more expressive way than
(ab)using the <combine> statement allows.

By default the <all> statement outputs an unamed literal with "true" as
value. However, this can be customized.

<all name="MyCustomName" value="all-fired">
	<data source="data1" />
	<data source="data2" />
</all>

The <all> statement supports reset and flushWith.

Conflicts:
	src/test/java/org/culturegraph/mf/morph/collectors/CollectorTest.java
Added an <any> statement to metamorph.

The statement implements a existential quantor or disjunction operation
(logical or-operation). It allows for checking whether at least one of
the statements contained in the <any> statement generated an output.
Using the <any> statement disjunctions can be written in a more
expressive way than (ab)using the <combine> statement allows.

By default the <any> statement outputs an unamed literal with "true" as
value. However, this can be customized.

<any name="MyCustomName" value="one-fired">
	<data source="data1" />
	<data source="data2" />
</any>

The <any> statement supports reset and flushWith.

Conflicts:
	src/test/java/org/culturegraph/mf/morph/collectors/CollectorTest.java
Added a <none> statement to metamorph.

The statement implements a logical not-operation. It allows for
checking whether none of the statements contained in the <none>
statement generated an output. Using the <none> statement negations can
be written in a more expressive way than (ab)using the <combine> and
<choose> statements allows.

By default the <none> statement outputs an unamed literal with "true" as
value. However, this can be customized.

<none name="MyCustomName" value="none-fired">
	<data source="data1" />
	<data source="data2" />
</none>

The <none> statement supports reset and flushWith.

Conflicts:
	src/test/java/org/culturegraph/mf/morph/collectors/CollectorTest.java
Added support for conditional activation of collectors.

This commits introduces an <if> statement which can be used to control
under which conditions a collector generates output. It can be used for
example to write a combine statement that only generates outputif data3
has a value of "x":

<combine name="output" value="${a}${b}">
  <if>
    <data source="data3">
      <equals string="x" />
    </data>
  </if>
  <data source="data1" name="a" />
  <data source="data2" name="b" />
</combine>

The quantors introduced by commits 475a55fc94, 12a0537220 and
e65f6d2e1a are meant to be used inside the <if> statement.