Changes from 1.0.4 to 1.0.6
---------------------------

** Bug
    * [FELIX-2094] - AttributeDefinition with an empty default value must attribute must result in a single (empty string) entry string array
    * [FELIX-2097] - DefaultMetaTypeProvider.getLocales() must not reuturn an empty string entry
    * [FELIX-2860] - getLocales() in DefaultMetaTypeProvider needs to check return of findEntries
    * [FELIX-2867] - getIcon() in LocalizedObjectClassDefinition keyset iteration incorrect
    * [FELIX-2868] - Icon only works if absolute path specified, but specification allows for relative urls
    * [FELIX-3183] - Attribute requirement is not validated
    * [FELIX-3364] - MetaDataReader exposes a private exception class on the public API
    * [FELIX-3720] - Designate's pid attribute is optional and not mandatory
    * [FELIX-3730] - AD.validate of string attributes must validate the string length
    * [FELIX-3732] - service.pid properties of ManagedServiceFactory services must be used as factory PIDs
    * [FELIX-3734] - MetaType: NPE in ServiceTracker for fragment bundle

** Improvement
    * [FELIX-3167] - Add support for new PASSWORD attribute type
    * [FELIX-3338] - Add support for optional attributes in the MetaDataReader as defined in the XML schema for metatype
    * [FELIX-3736] - Add support for MetaTypeProvider service modifications
    * [FELIX-3740] - Maintain the MetaTypeProvider service tracker on the MetaTypeService

** New Feature
    * [FELIX-2719] - Add name space support to the meta type implementation

** Task
    * [FELIX-2096] - Check MetaTypeProvider.getObjectClassDefinition(String, String) specification compliance
    * [FELIX-3182] - Update to use parent POM 2.1
    * [FELIX-3184] - Add support for metatype extension by MetatypeProvider services
    * [FELIX-3731] - Multi-Value service.pid service properties must be supported
    * [FELIX-3733] - Clarify icon location


Changes from 1.0.2 to 1.0.4
---------------------------
** Bug
    * [FELIX-1226] - The MetaType service should ignore the pid attribute of Designate elements if factoryPid is set.

** Improvement
    * [FELIX-718] - Update NOTICE file to new format
    * [FELIX-1227] - Project Descriptor Enhancement
    * [FELIX-1434] - Include service tracker in bundle instead of importing it


Changes from 1.0.0 to 1.0.2
---------------------------

** Bug
    * [FELIX-520] - MetaDataReader - ad.setMax
    * [FELIX-521] - MetaType - optionValues check
    * [FELIX-597] - Meta type service incorrectly parses attribute element content when the content is specified in value child tags
    * [FELIX-607] - Meta type localization incorrectly resolved in the meta type folder

** Improvement
    * [FELIX-666] - Metatype OBR description


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

** New Feature
    * [FELIX-20] - Implement Metatype Service
