Changes in 1.0.6
----------------
** Bug
    * [FELIX-5755] - Servlet API should be optional
** Task
    * [FELIX-5756] - Update project to latest parent pom


Changes in 1.0.4
----------------
** Bug
    * [FELIX-4437] - Zip Writer does not pass the correct isZip status to the InventoryPrinterHandler


Changes in 1.0.2
----------------
    * [FELIX-4078] - ConfigurationPrinterAdapter.getMethod should not only consider implementation class


Initial Release 1.0.0
---------------------

** Bug
    * [FELIX-3916] - Full ZIP file has wrong file indices
    * [FELIX-3947] - ClassDefNotFoundError in Inventory bundle setup if Servlet API cannot be wired
    * [FELIX-3963] - Properly handle method resolution through reflection
    * [FELIX-3964] - Wrong signature for non-service InventoryPrinter services
    * [FELIX-4026] - InventoryPrinter must run on Java 1.4 plattforms (for embedded use)
    * [FELIX-4037] - URL parsing is not compatible with ConfigurationRender plugin
    * [FELIX-4075] - Cleanup InventoryPrinter generated file names in the ZIP file

** Improvement
    * [FELIX-3945] - Don't use SLF4j Logging
    * [FELIX-3958] - Allow JSON output for InventoryPrinters not natively supporting JSON
    * [FELIX-3959] - PrinterMode.valueOf should be case-insensitive
    * [FELIX-4025] - Cleanup InventoryPrinter API

** Task
    * [FELIX-3874] - Create new status printer module
    * [FELIX-3970] - Remove unneeded hashCode and equals methods from PrinterMode