Also avoid ReadBytes calls that allocate a buffer by either updating the stream position (if not interested in the bytes), by reusing an input buffer (if interested in the bytes), or using a stackalloc buffer to avoid the allocation (for small reads).
added unit test
update ToHex(byte[]) to support mono
added punctuations to unit test summary and parameter description
Replaced with Convert.ToHexString(), public ToHex() + use from Color.ToString()
Adjusted back to a simpler mono compatible version only, with lowered allocation