Refactored OPFData parsing

 * Made `OPFData` an immutable data object
 * OPFData is created via an `OPFDataBuilder`
 * `OPFData` content is parsed in `OPFPeeker`
   (parsing was previously done in `VersionRetriever`)
 * Adapted the parsing code to be able to gather more data
   (continue parsing until the `metadata` end tag)
Parse dc:type info in OPFData

 * OPFPeeker can now parse top-level `dc:type` elements
 * OPFPeeker is now constructed with a `GenericResourceProvider` and is
   responsible for creating and closing its own `InputStream`
 * Updated Guava to version 15.0.1 (to use the `Closer` utility)
 * Made `InvalidVersionException` inherit from `SAXException` so that
   it can be rethrown directly from the parsing code
 * Added tests for the new `dc:type` parsing
Add unique-identifier support to OPFData
Support multiple validators in OPFChecker

Replaced the declaration of 1 RelaxNG validator + 1 Schematron
validator by a set of `XMLValidator`.
Make OCFData and OPFData in OCFPackage reusable

`OCFData` and `OPFData` objects are now parsed lazily and memoized.
They are returned as simple getters (memoized using a Guava supplier),
thus removing the previously needed `Report` argument. A `Report`
object can instead be passed to the `OCFPacakge` in initializing code.
Clean OPFChecker fields and inheritance

 * Made most fields finals
 * Clena constructors chain
 * Map initializers are now protected and overriden for EPUB 3.0.x
Support per-type validators in content checkers

  * Grouped `XMLValidator`s in an `enum`
  * Added publication types as a parameter to the factory method of
   `ContentCheckerFactory`
  * `OPSChecker` stores validators in a multi-map with `OPSType` keys
  * Publication types can be looked-up to instantiate the validators
    multimap accordingly
Merge pull request #423 from IDPF/feature/pub-types

Support custom schema-based checks for specific publication types