Making the EntityType API more consitent

 1. Adding missing methods
 2. Using the same parameters for all methods operating on a specific metadata type.
 3. Adding missing NotNull annotations
 4. Ensuring the uniqueness of the metadata items
 5. Providing more helpfull exceptions
 6. Treating the primary key as a key in TryGetKey and related methods
According to MSDN using == for two strings results in ordinal comparision. http://msdn.microsoft.com/en-us/library/system.string.op_equality(v=vs.110).aspx