Relax return-count check

Increased the number of allowed return statements to three. Restricting
the number of return statements to two resulted in code that was less
easier to read than code with more return statements.
Add comments and remove trailing whitespace
Improve `StringUtils.copyToBuffer`.

Changes the logic for resizing the buffer so that it first calculates
the new buffer size and then allocates the buffer instead of growing the
buffer in multiple steps during the calculation.

Additionally, the commit adds assertions to ensure the method is called
with valid parameters.

The Javadoc of `copyToBuffer` now describes the assertions and adds an
example showing how the method is intended to be used.

Finally, the commit adds two test cases for the method.
Update junit related PMD rules

The following rules are disabled:
 * JUnitSpelling: Checking the spelling of several junit methods is no
   longer required with junit 4 since we use annotations to mark junit
   related methods.
 * JUnitTestsShouldIncludeAssert: We use Mockito verification in many
   tests. Hence, it is okay to have tests without asserts.
 * JUnitAssertionsShouldIncludeMessage: Including a message in every
   assert appears to be too verbose.

The commit also adds the .eclipse-pmd file to gitignore. This file
holds the configuration of the eclipse-pmd plugin (an alternative to
the pmd-eclipse-plugin).
Exclude check for boolean inversion from PMD

The argument for using bitwise inversion instead of boolean inversion is
quite dated and in tests I could not reproduce the improved performance
of bitwise inversion compared to boolean inversion. In any case, the
performance gain is so small in most cases that it does not compensate
for the loss in readability of the code.
Add utility class for method argument checking

Introduces the `Require` class which  provides a basic set of static
methods which are useful for validating method arguments. These methods
are:

 - `notNull`
 - `notNegative`
 - `validArrayIndex`
 - `validArraySlice`

All methods exist in two versions: one that outputs a default exception
message and second one which allows the caller to customize the
exception message.
Add generic check to `Require`.

The new method `Require.that` checks that the argument is true. If not
an `IllegalArgumentException` is thrown.
Add builder for ISO 2709:2008 records.

The ISO-standard 2709:2008 defines a data format for bibliographic
records. The MARC21 format is probably the best known instance of this
standard. This commits adds a builder for constructing records in ISO
2709:2008 format.
Add encoder for MARC21 records.

The `Marc21Encoder` uses the ISO 2709:2008 record builder introduced in
commit 1c13d5a114627cc98446bf1ebd427288ca006ee1. The stream which is
processed by the encoder need to follow certain requirements described
in the Javadoc of the class. The stream format is compatible to the
stream produces by the `MarcEncoder` and `MarcXmlHandler` modules.

The encoder is available as flux command.