Change Domain::GetId so it only throws an exception when an actual error occurs

Instead of blanketly throwing an exception when virDomainGetId returns -1, check to see if an actual error object exists in virGetLastError; if it does, then throw the exception as normal, and if it doesn't then just return null. This will allow the caller to handle a null domain id without having to clutter up the code with try/catch blocks for situations that might not be exceptional (i.e., the domain is simply not running).