Bug 2003: CDS serialization improvements

In NormalizedNodeToNodeCodec#encode, significant time was spent
serializing the YangInstanceIdentifier path via PathUtils even though it
wasn't actually needed - the decode method didn't decode it.

This might have been used by WriteModification and MergeModification
originally however they currently serialized/deserialize their
YangInstanceIdentifier path separately from the NormalizedNode via
InstanceIdentifierUtils. It turns out this takes significant time as
well as it's implemented similarly as PathUtils.

So I ended up using NormalizedNodeToNodeCodec to encode/decode the
YangInstanceIdentifier along with the NormalizedNode but changed
InstanceIdentifierUtils to utilize the new PathArgumentSerializer
and the NormalizedNodeSerializer's special QName encoding.

With serializing a 5K batch of WriteModifications with flow data, the
time went down from ~350 ms to ~150 ms. Deserialization was also
improved.

Other smaller optimizations in NormalizedNodeSerializer,
NormalizedNodeType, PathArgumentSerializer and PathArgumentType chopped
another 20-30 ms off the time.

I also changed InstanceIdentifierUtils to serialize/deserialize via the
new PathArgumentSerializer and the NormalizedNodeSerializer's special QName
encoding by default, even when the ID isn't encoded as part of a
NormalizeNode. This seems reasonable to me as a standalone IID will
likely have repeated namespaces and revisions plus we get savings by not
serializing each path arg class name.

Removed the deprecated InstanceIdentifierUtils class in
sal-distributed-datastore bundle.

Change-Id: Iaa29daeaececf4b93065f4d46d0c2796c4d8188f
Signed-off-by: tpantelis <tpanteli@brocade.com>
Merge "Bug 2003: CDS serialization improvements"