Added the new TypeEx property and fixed Type

The Type property is now almost consistent with the MediaServer2Spec Type
property.  This should remove a source of constant confusion and
fix a number of bugs, in for example the download sync controller.
dLeyna-server's implementation of Type differs only from MediaServer2Spec
in one way.  dLeyna-server has introduced one new value, item.unclassified,
which is used when the object in question is an item but not one of the
items supported by MediaServer2Spec, i.e., not an audio, video or image
item.

A new property, TypeEx has been introduced.  TypeEx contains the
extended type information for an object, i.e., the value Type used
to hold (althought the values have changed), so if applications want
the extended type they can still retrieve it.

Both Type and TypeEx are searchable.  The superset of values specified
by TypeEx are permitted when creating a container, both in the type
of the container and it its create classes.

The extended type is exposed in the CreateClasses of a container and in
the LastChange event.

Type is no longer permitted in Update.  TypeEx must be used.

From an API point of view there are two breakagaes:

1. Applications that used Type to retrieve extended type information,
   need to be updated to use TypeEx.  Applications that used Type
   in their search queries might also need to be updated.
2. Applications that updated the Type of an object will need to be
   updated to use TypeEx instead.

There is one slightly unpleasent hack required to report the correct
values for Search and Sort Caps.  A correct solution would require
making the p_map hash table many to many, which would result in a bigger
change.  I've left this improvement for another commit.

Signed-off-by: Mark Ryan <mark.d.ryan@intel.com>