Improve Errno parsing of Win32 output

This allows us to pluck "0xC038000FL" rather than "(0xC038000FL" out of
"(DWORD)(0xC038000FL)", which means we go into the hex case rather than
the eval case, and get the desired result (hex '0xC038000F' returns
3224895503, whereas eval '(0xC038000F' returns nothing).

Also allows for "((DWORD)(0xC038000FL))" and other existing formats.
Tweak Errno parsing some more

This requires there to be something present in the "0xcafebabe" part of
the "((type)0xcafebabe)" (et alia) pattern, otherwise it can end up
matching things that it shouldn't. (The "type" part is already required
to be non-empty.)
Errno parsing: Don't match hex numbers in parts of function names

This stops __stdcall being seen as a hex number and turned into __stdca.
Also include _ in the pattern to match function names so that that gets
skipped anyway.
Errno parsing: Skip expressions containing function names etc

Expressions containing a function name are no more eval()able than
expressions which are just a function name, so skip them too. This also
picks up on text in the expression and stops eval()s from whining about
"String found where operator expected" on Win32 (with VC10) on expressions
like L"\\Enlistment\\" and (sizeof(L"\\Enlistment\\")+(38*sizeof(WCHAR))),
encountered when parsing ENLISTMENT_OBJECT_PATH and
ENLISTMENT_OBJECT_NAME_LENGTH_IN_BYTES respectively.
Bump $Errno::VERSION for previous commits