Improve efficiency of readBulk buffer reading

The previous implementation was reading 1 byte at a time and then
copying it to a target buffer. Now it reads as many bytes as
possible into the target buffer up to the byte length.

Also changed num_bytes to numBytes as it was probably a Ruby typo