Port vfs_rar.cpp to the modern UnRAR (7.x) API.

UnRAR 7.0 modernized its C++ API: the NM name-length macro is gone,
Archive::FileHead.FileName is now std::wstring (was wchar[NM]),
ConvertPath takes std::wstring* pointers, and UtfToWide/WideToUtf gained
std::wstring/std::string overloads. Switch the `byte` buffers to uint8_t,
and move `using namespace std;` to after the unrar include so C++17's
std::byte no longer collides with unrar's `byte` inside its own headers.
The extraction pipeline (Archive/ComprDataIO/Unpack) is unchanged.

Upstream (DeaDBeeF-Player/vfs_rar) is inactive and no fork has ported
this; carried locally. Builds against app-arch/unrar's unrarsrc-7.2.6.
--- a/vfs_rar.cpp
+++ b/vfs_rar.cpp
@@ -1,11 +1,12 @@
 #include <cassert>
 #include <vector>
 #include <string>
-using namespace std;
 
 #include <deadbeef/deadbeef.h>
 #include "unrar/rar.hpp"
 
+using namespace std;
+
 //-----------------------------------------------------------------------------
 
 #ifdef DEBUG
@@ -25,7 +26,7 @@
 	Archive *arc;
 	ComprDataIO *dataIO;
 	Unpack *unp;
-	byte *buffer;
+	uint8_t *buffer;
 	size_t buffer_size;
 
 	int64_t offset;
@@ -36,7 +37,7 @@
 
 void unstore_file(ComprDataIO *dataIO, int64_t size)
 {
-	byte buffer[0x10000];
+	uint8_t buffer[0x10000];
 	while (1) {
 		uint code = dataIO->UnpRead(buffer, 0x10000);
 		if (code == 0 || (int)code == -1)
@@ -84,11 +85,11 @@
 	// get the compressed file in this archive
 	fname = colon+1;
 
-	wchar_t wrarname[NM];
-	UtfToWide(rarname, wrarname, ASIZE(wrarname)-1);
+	std::wstring wrarname;
+	UtfToWide(rarname, wrarname);
 
-	wchar_t wfname[NM];
-	UtfToWide(fname, wfname, ASIZE(wfname)-1);
+	std::wstring wfname;
+	UtfToWide(fname, wfname);
 
 	Archive *arc = new Archive();
 	trace("opening rar file: %s\n", rarname);
@@ -109,9 +110,9 @@
 		switch (hdr_type) {
 		case HEAD_FILE:
 			if (!arc->IsArcDir()) {
-				wchar_t warcfn[NM];
-				ConvertPath(arc->FileHead.FileName, warcfn, NM);
-				if (!wcscmp(warcfn, wfname)) {
+				std::wstring warcfn;
+				ConvertPath(&arc->FileHead.FileName, &warcfn);
+				if (warcfn == wfname) {
 					trace("file %s found\n", fname);
 					found_file = true;
 				}
@@ -138,7 +139,7 @@
 	Unpack *unp = new Unpack(dataIO);
 	SecPassword secpwd;
 
-	byte pswcheck[SIZE_PSWCHECK];
+	uint8_t pswcheck[SIZE_PSWCHECK];
 	dataIO->SetEncryption(
 		false,
 		arc->FileHead.CryptMethod,
@@ -161,7 +162,7 @@
 	dataIO->SetFiles(arc, NULL); // we unpack data to memory
 
 	// Unpack the full file into memory
-	byte *buffer = (byte *)malloc(arc->FileHead.UnpSize);
+	uint8_t *buffer = (uint8_t *)malloc(arc->FileHead.UnpSize);
 	dataIO->SetUnpackToMemory(buffer, arc->FileHead.UnpSize);
 
 	if (arc->FileHead.Method == 0)
@@ -296,8 +297,8 @@
 	vector<string> fname_list;
 	Archive arc;
 
-	wchar_t wdir[NM];
-	UtfToWide(dir, wdir, ASIZE(wdir)-1);
+	std::wstring wdir;
+	UtfToWide(dir, wdir);
 
 	if (!arc.WOpen(wdir))
 		return -1;
@@ -314,9 +315,9 @@
 		switch (hdr_type) {
 		case HEAD_FILE:
 			if (!arc.IsArcDir()) {
-				char fname[wcslen(arc.FileHead.FileName)*2];
-				WideToUtf(arc.FileHead.FileName, fname, ASIZE(fname));
-				fname_list.push_back(string(fname));
+				std::string fname;
+				WideToUtf(arc.FileHead.FileName, fname);
+				fname_list.push_back(fname);
 			}
 			break;
 
