Fix error message buffer size bug

We were passing the size of the message buffer in bytes
instead of the number of characters. This caused issues
when UNICODE is being used because there are at least 2
bytes per character. This was causing buffer over-runs.

Instead of setting the buffer size with a literl number
I have used the constants ERROR_MESSAGE_BUFFER_BYTES and
ERROR_MESSAGE_BUFFER_CHARS

Closes #57