Add initial implementation
Add optimized version using BitConverter
Revert to using BinaryReader
Replace primitiveConvHelper and tupleConvHelper functions with a single conv function