Mapping for errors

Changed GetLastError to return VirError instead of a simple string.
VirError helps getting easy access to the error code, level and domain.
VirError implements the error interface for easy use.