Portability and compiler warning modifications

Hi Colby,

and many thanks for pulling in my previous requests. Here is a new pull request with a few portability adaptations and some corrections to avoid compiler warnings. 

The only potentially controversial modification, I believe, is in `ByteBufferByteSource` where I have replaced the usage of array property `LongLength` with `Length`. As far as I have been able to tell, the maximum *theoretical* length that might be assigned is `uint` maximum (i.e. the type of the `IBuffer.Size` property). If you do not approve of this modification, just ignore this part of the pull request.

In `DicomDirectory`, I have added the `new` keyword to the (static) methods that override the corresponding `DicomFile` methods. The compiler issued warnings when the keyword was not in place. I suppose the intention is that the base class methods should be hidden by the implementations in the subclass?

In `ColorSpace` I (or ReSharper, really) have added `Equals` methods and updated the `GetHashCode` method to match the `==` and `!=` operator overloads, again to avoid compiler warnings. I hope you are OK with these modifications, too.

Best regards,
Anders