reg.exe/tests: Parameterise error messages

Also use %u for DWORD instead of %d
reg.exe/tests: Add negative DWORD tests
reg.exe/tests: Add REG_EXPAND_SZ tests for reg add
reg.exe/tests: Add REG_MULTI_SZ tests for reg add
reg.exe/tests: Add REG_BINARY tests for reg add

Have to add an exception to verify_reg and check it manually
because winXP suffixes a 0 nibble while the rest prefix it.
reg.exe/tests: Add REG_DWORD_BIG_ENDIAN tests for reg add

Apparently this is broken in every version of windows.
reg.exe: Sanitize key paths in main

Checks against remote host and strips backslashes from the start
and end of the key name to make parsing easier later on
reg.exe: Add path/key conversion functions

Functions to get the key, root key, and root key name string from
a string sanitized by sanitize_path
reg.exe: Add wchar/type conversion functions
reg.exe: Add wchar/raw data conversion functions

In the case of REG_SZ and the like, it may seem like the functions
perform an unncessary copy of the strings which should already be
in memory ripe for the taking.

However because these functions handle more than one type of data
the calling function needs to be able to free the data afterwards.

Simply returning the input string would result in a function
freeing one of it's own parameters, so we make sure to return
new memory by making a copy.
reg.exe: Clean up reg_add
reg.exe: Clean up reg_delete
reg.exe: Implement query functionality