[xbuild] Fix BuildItem.GetMetadata() and TaskItem.GetMetadata ()

This change makes those functions behave like their equivalents in .NET.

The following tables illustrate the results from test runs of these functions
with various inputs on .NET:

BUILDITEM with ctor (string,string):

         | itemspec input unescaped      | itemspec input escaped
---------+-------------------------------+------------------------------
         | GetMetadata | GetEvalMetadata | GetMetadata | GetEvalMetadata
---------+-------------+-----------------+-------------+----------------
FullPath | escaped     | unescaped       | escaped     | unescaped
FileName | unescaped   | unescaped       | escaped     | unescaped
Identity | unescaped   | unescaped       | escaped     | unescaped


BUILDITEM with ctor (string, ITaskItem)

         | itemspec input unescaped      | itemspec input escaped
---------+-------------------------------+------------------------------
         | GetMetadata | GetEvalMetadata | GetMetadata | GetEvalMetadata
---------+-------------+-----------------+-------------+----------------
FullPath | escaped     | unescaped       | escaped     | unescaped
FileName | escaped     | unescaped       | escaped     | unescaped
Identity | escaped     | unescaped       | escaped     | unescaped


TASKITEM

         | itemspec input unescaped | itemspec input escaped
---------+--------------------------+-----------------------
         | GetMetadata              | GetMetadata
---------+--------------------------+-----------------------
FullPath | unescaped                | unescaped
FileName | unescaped                | unescaped
Identity | unescaped                | unescaped