Changes from 4 to 5
-------------------
** Improvement
    * [FELIX-5820] - Update to latest Apache parent pom
                     Set java min version to 7
                     Reduce supported java versions to 6, 7, 8, 9 (drop 4, 5, add 8, 9)
                     Add missing encoding properties
                     Remove dependency management of testing dependencies
                     Update versions of plugins
                     Use enforcer plugin to enforce maven and min java version
                     Remove calculation of BREE header


Changes from 3 to 4
-------------------
** Improvement
    * [FELIX-5157] - Add m2e lifecycle mappings
    * [FELIX-5158] - Update test dependencies
    * [FELIX-5159] - Update plugin dependencies
    * [FELIX-5160] - Update configuration for Apache rat plugin


Changes from 2.1 to 3
---------------------

** Improvement
    * [FELIX-3486] - Allow for easy specification of class file compliance
         and Java API use

** Task
    * [FELIX-4152] - Update to latest Apache Parent POM 13
    * [FELIX-4153] - Use latest JavaDoc plugin and provide default
         configuration


Changes from 2 to 2.1
---------------------

Generate zip and tar.gz project archives


Changes from 1 to 2
-------------------

** Wish
    * [FELIX-1747] - Use Remote Resources Plugin to generate the legal files

         